所以我正在使用 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 的文件上传页面来实现那个监听器,但也许我在某些时候出错了。