你好,我在struts2中用过commons-fileuplod。
编辑:当我在eclipse with right click and run on server上运行我的演示时,上传文件所花费的时间非常少
**Run From ECLIPSE :**
File Size : 247 MB
Time TAken By upload using Run On server From eclipse :--> 2989 MS在另一边,当我deploy same demo war file to Tomcat in webapps folder并运行时。因此,与以前的情况相比,上传文件需要更多的时间。(为什么时差这么大?)
**Run Using Deploy Demo In Tomcat :**
File Size : 247 MB
Time TAken By upload By deploed war file to tomcat web apps folder :--> 14162 MS我要改变java.io.tmpdir in MonitoredMultiPartRequest.java
System.setProperty("java.io.tmpdir", "D:\\ankit");
System.out.println("java.io.tmpdir :--> " + System.getProperty("java.io.tmpdir"));
UploadListener listener = new UploadListener(servletRequest);
// Create a factory for disk-based file items
FileItemFactory factory = new MonitoredDiskFileItemFactory(listener);
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
try{
long start = System.currentTimeMillis();
List items = upload.parseRequest(servletRequest);
long end = System.currentTimeMillis();
System.out.println("Time TAken By upload 3.2.1 :--> " + (end - start));
getsystemDetail();
} catch (Exception e){
errors.add(e.getMessage());
}在这里,我提到我的日志:
从ECLIPSE运行的 :
==== System Property =========
java.io.tmpdir :--> D:\ankit
================================
Time TAken By upload File :--> 2989
==================================
##### Heap utilization statistics [MB] #####
Used Memory:46
Free Memory:85
Total Memory:132
Max Memory:675
File system root: C:\
Total space (mb): 79899
Free space (mb): 31833
Usable space (mb): 31833
File system root: D:\
Total space (mb): 158472
Free space (mb): 117366
Usable space (mb): 117366
This is ServletContext RealPath path ::--> D:\eclipseWorkSpace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\FILEUPLOAD_DEMO_OldLIB\
File Uploaded Succ. TO ::-> D:\ankit\eclipse.zip在Tomcat中使用Deploy运行 :
==== System Property =========
java.io.tmpdir :--> D:\ankit
================================
Time TAken By upload File :--> 14162
==================================
##### Heap utilization statistics [MB] #####
Used Memory:100
Free Memory:31
Total Memory:132
Max Memory:1820
File system root: C:\
Total space (mb): 79899
Free space (mb): 31830
Usable space (mb): 31830
File system root: D:\
Total space (mb): 158472
Free space (mb): 117358
Usable space (mb): 117358
This is ServletContext RealPath path ::--> D:\tools\tomcat7-6\webapps\FILEUPLOAD_DEMO_OldLIB\
File Uploaded Succ. TO ::-> D:\ankit\eclipse.zip发布于 2013-10-17 20:50:22
假设您的250 to文件位于您的C:\上,并且您是从eclipse运行的,那么它将把文件复制到同一个驱动器到临时目录中。即使您的eclipse驻留在您的D:\中,它也使用您在eclipse配置中看到的Windows目录。在Tomcat测试中,它使用Tomcats目录,如配置中所示。
因此,如果您的文件位于C:\中,则如下所示:
从eclipse运行的:
C:\myLargeFile.dat -> C:\Users\ANKITV~1.PAT\AppData\Local\Temp\myLargeFile.dat
在Tomcat中使用Deploy运行
C:\myLargeFile.dat -> D:\tools\tomcat7-6\temp\myLargeFile.dat
我不知道您的硬件设置,但是如果您的C:\是固态的,而D:\不是的话,结果会有很大的变化。即使使用高性能的硬盘,在硬盘之间传输时也会出现性能损失,您可以通过在两个驱动器之间复制一个大文件来见证这一点,但只需将文件复制到同一驱动器中的不同位置,并注意它需要多长时间(确保您复制了它,而不是移动它)。
一些测试这是否是问题的好方法:
C:\。有关如何做到这一点的更多信息,请查看这篇文章:How is the Tomcat temp directory location defined?C:\,并再次测试它。相当不言自明,但如果您有系统变量或指向它的脚本,则可能会有更多的工作。你能不能帮我们测试一下,让我们知道你发现了什么?我很想听听结果!下面是我所指的配置文件中的要点:
从eclipse运行的:
...
java.io.tmpdir=C:\Users\ANKITV~1.PAT\AppData\Local\T...
...在Tomcat中使用Deploy运行
...
java.io.tmpdir=D:\tools\tomcat7-6\temp
...https://stackoverflow.com/questions/19241933
复制相似问题