首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将文件上载到java webapp中的单独线程中。

将文件上载到java webapp中的单独线程中。
EN

Stack Overflow用户
提问于 2015-08-03 08:40:23
回答 1查看 2.3K关注 0票数 1

我需要一个表单,用户可以上传大文件(>200 to )。我想在不同的线程中启动上传,这样用户就可以启动3-4上传,然后再做一些其他的事情。我的问题是当我运行辅助线程时,生成的.tmp文件被删除。我用Struts2。

struts2给了我什么:

代码语言:javascript
复制
private String uploadContentType;
private String uploadFileName;
private File upload;

我使用线程的构造函数将这些信息传输到线程。

代码语言:javascript
复制
MyThread thread=new MyThread (sourceName, uploadFileName, upload, user, database);
thread.start();

在run()方法中:

代码语言:javascript
复制
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);

而错误是:

代码语言:javascript
复制
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()时消失了。

那么,除了主线程之外,我如何在其他线程上上传文件呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-03 09:22:47

在WebApp中运行多个线程基本上是不需要的,而且几乎总是一个坏主意。

您可能不知道可以使用upload multiple files concurrently。您还可以调整配置设置,允许大小高于默认阈值的文件(每个文件和每个请求)。

要完成让用户在开始上传后做其他事情的要求,唯一剩下的事情可以通过以下两种方法实现:

  1. 在新选项卡中打开上载页,然后运行标准提交(用户然后手动更改以前的选项卡)
  2. 使用target="_blank"在新选项卡中打开上载操作(用户然后手动更改以前的选项卡)
  3. 通过AJAX上传(但规模庞大,可能会遇到限制和问题)。

我会采用解决方案n.2。

编辑

谢谢你的建议,它应该工作,但我如何能自动关闭我的行动选项卡?

例如,有许多方法可以返回由以下内容组成的JSP:

代码语言:javascript
复制
<script>
    window.close();
</script>

但是,考虑用一个描述性更强、非自动关闭的页面告诉用户操作的正面(或负面)结果,或者(如果您关闭选项卡)从另一个选项卡中通知某种类型的侦听器(这将是一个非常完美的问题,这将是一个全新的问题,所以尝试在此之前完成这项工作)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31782910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档