0

所以我正在使用 resumable.js 将文件上传到服务器。

我要保存到的目录类似于

/dir/files/upload/

明明只是编造的,但是这个目录有用户写入的权限。我正在使用 JSP 来监听 resumable.js 发出的 POST 请求,并编写

.part

文件到该目录。示例监听器:

<%          if(request.getMethod().equals("POST") && request.getParameter("resumableFilename") != null){
               long chunkSize = StringUtils.isEmpty(request.getParameter("resumableChunkSize"))? 0:Long.parseLong(request.getParameter("resumableChunkSize"));
               String fileName = request.getParameter("resumableFilename");
               long totalSize = StringUtils.isEmpty(request.getParameter("resumableTotalSize"))? 0:Long.parseLong(request.getParameter("resumableTotalSize"));
               String temp_dir = "/dir/files/upload/"+request.getParameter("resumableIdentifier");//Add in user_id
               String dest_dir = temp_dir+fileName+".part"+request.getParameter("resumableChunkNumber");
               File fDir = new File(temp_dir);
               fDir.mkdirs();
               if(ServletFileUpload.isMultipartContent(request)){
                   DiskFileItemFactory factory = new DiskFileItemFactory(); 
                   factory.setRepository(new File(temp_dir));                          ServletFileUpload upload = new ServletFileUpload(factory);
                   List items = upload.parseRequest(request);
                   ArrayListIterator iter = (ArrayListIterator)items.iterator();
                   FileItem item = (FileItem)iter.next();
                   File fileWithNewDir = new File(dest_dir);
                   item.write(fileWithNewDir);  // write file to dest_dir (fileName.part*CHUNK_NUM*)
                   }
                }
%>

该脚本托管在

www.site.com/pubs/res.jsp

根据JS本身的resumable,上传的过程就完成了,但是根本没有新建一个目录。我知道这不是写权限,所以它必须是别的东西。

这是我在 javascript 中调用一个新的可恢复对象

var resume = new Resumable({
    target:"res.jsp",
    resumableChunkSize: 1*1024*1024,
    simultaneousUploads: 3,
    testChunks: false,
    throttleProgressCallbacks: 1
    });

它似乎正在命中 jsp 文件,但没有发生任何事情。

我按照 Apache 的文件上传页面来实现那个监听器,但也许我在某些时候出错了。

Apache 的文件上传

可恢复的.js

4

1 回答 1

1

目录的位置很重要。它必须在 WAR 的上下文中。您不能写入容器上下文之外的任何位置。如果您查看日志,您可能会看到可以解释这一点的错误消息。

于 2013-01-22T18:52:21.470 回答