How do I resume a file upload?

Viewed 414

I am using plupload at JavaScript library. I want to resume file uploads if there is a failure while implementing file uploads.

I've been told to use HTTP chunk transfer. but I don't know, How can I use it.

please show following server-side code.

 private static final int BUFFER_SIZE = 100 * 1024;
     try {
         Integer chunk = 0, chunks = 0;
         if(null != request.getParameter("chunk") && !request.getParameter("chunk").equals("")){
             chunk = Integer.valueOf(request.getParameter("chunk"));
         }
         if(null != request.getParameter("chunks") && !request.getParameter("chunks").equals("")){
             chunks = Integer.valueOf(request.getParameter("chunks"));
         }
         logger.info("chunk:[" + chunk + "] chunks:[" + chunks + "]");
...
         appendFile(file.getInputStream(), destFile, response);

         if (chunk == chunks - 1) {
             logger.info("upload success !");
         }else {
             logger.info("left ["+(chunks-1-chunk)+"] chunks...");
         }

     } catch (IOException e) {
         logger.error(e.getMessage());
     }
 }

 public void appendFile(InputStream in, File destFile, HttpServletResponse response) {

     OutputStream out = null;
     try {
         if (destFile.exists()) {
             out = new BufferedOutputStream(new FileOutputStream(destFile, true), BUFFER_SIZE);
         } else {
             out = new BufferedOutputStream(new FileOutputStream(destFile),BUFFER_SIZE);
         }
         in = new BufferedInputStream(in, BUFFER_SIZE);

         int len = 0;
         byte[] buffer = new byte[BUFFER_SIZE];
         while ((len = in.read(buffer)) > 0) {
             out.write(buffer, 0, len);
         }
     } catch (Exception e) {
         logger.error(e.getMessage());
     }
     finally {
         try {
             if (null != in) {
                 in.close();
             }
             if(null != out){
                 out.close();
             }
         } catch (IOException e) {
             e.getMessage();
             logger.error(e.getMessage());
         }
     }
 }
0 Answers
Related