Hello,

I am implement a API that lets user download file.

This file is created for each user and can be different for each request.

So, I have to delete the file when a user is done downloading the file. The
files size can be in Gigs, so the download wont be quick.

We are using wink for rest of the API, this is just a extension. So I will
not like to keep implementation as is in same file.

My question is how do I know that the download operation is finished, so I
can delete the file.


Here is a test case, similar to what I do in the real implementation.


import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.LineNumberReader;
import java.io.FileInputStream;
import java.io.InputStream;
import javax.ws.rs.GET;
import javax.ws.rs.HeaderParam;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.ResponseBuilder;

@Path("fileDownLoader")
public class FileDownLoader {
private final String logpath = "C:\\temp\\";

@Context
  HttpHeaders requestHeaders;

  @GET
  @Produces({"application/json"})
  @Path("/{fileName}")
  public Response downLoadFile(@PathParam("fileName") String fileName) {

        Response response = null;
InputStream in = null;
try {
     in = new FileInputStream(logpath+fileName);
     response = Response.ok(in,
MediaType.APPLICATION_OCTET_STREAM_TYPE).build();
} catch( FileNotFoundException fnfe) {
        fnfe.printStackTrace();
}

return response;

  }
}

-- 

-- 
Rohit

“We all die. The goal isn't to live forever, the goal is to create
something that will.” Chuck Palahniuk
http://www.facebook.com/huskercane

Reply via email to