我需要一个表单,用户可以上传大文件(>200 to )。我想在不同的线程中启动上传,这样用户就可以启动3-4上传,然后再做一些其他的事情。我的问题是当我运行辅助线程时,生成的.tmp文件被删除。我用Struts2。
struts2给了我什么:
private String uploadContentType;
private String uploadFileName;
private File upload;我使用线程的构造函数将这些信息传输到线程。
MyThread thread=new MyThread (sourceName, uploadFileName, upload, user, database);
thread.start();在run()方法中:
System.out.println("Src File name: " + myFile);
System.out.println("Dst File name: " + myFileFileName);
File destFile =new File(UPLOAD_DIRECTORY, myFileFileName);
FileUtils.copyFile(myFile, destFile);而错误是:
Src Filename:
C:\***myeclipsepath***\upload_1949ed75_1002_4ccf_b198_
25faff66563a_00000003.tmp
Dst File name: books.xml
java.io.FileNotFoundException:
C:\***myeclipsepath***\upload_1949ed75_1002_4ccf_b198_
25faff66563a_00000003.tmp (Le fichier spécifié est introuvable)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at org.apache.commons.io.FileUtils.doCopyFile(FileUtils.java:1068)
at org.apache.commons.io.FileUtils.copyFile(FileUtils.java:1021)
at org.apache.commons.io.FileUtils.copyFile(FileUtils.java:968)
at bo.threads.MyThread .run(MyThread .java:68)当我一步一步地调试时,我会看到.tmp文件在我调用thread.start()时消失了。
那么,除了主线程之外,我如何在其他线程上上传文件呢?
发布于 2015-08-03 09:22:47
在WebApp中运行多个线程基本上是不需要的,而且几乎总是一个坏主意。
您可能不知道可以使用upload multiple files concurrently。您还可以调整配置设置,允许大小高于默认阈值的文件(每个文件和每个请求)。
要完成让用户在开始上传后做其他事情的要求,唯一剩下的事情可以通过以下两种方法实现:
target="_blank"在新选项卡中打开上载操作(用户然后手动更改以前的选项卡)我会采用解决方案n.2。
编辑
谢谢你的建议,它应该工作,但我如何能自动关闭我的行动选项卡?
例如,有许多方法可以返回由以下内容组成的JSP:
<script>
window.close();
</script>但是,考虑用一个描述性更强、非自动关闭的页面告诉用户操作的正面(或负面)结果,或者(如果您关闭选项卡)从另一个选项卡中通知某种类型的侦听器(这将是一个非常完美的问题,这将是一个全新的问题,所以尝试在此之前完成这项工作)。
https://stackoverflow.com/questions/31782910
复制相似问题