我有一个问题仅在将Web应用程序打包到WAR中并安装在Tomcat服务器上时发生-在开发过程中不会发生。
我要做的是:
我从Part
(已上传的文件)中检索了HttpServletRequest
:
Part uploadedFile = null;
for(Part part: parts) {
if(part == null)
continue;
if(uploadFieldName.equalsIgnoreCase(part.getName())) {
uploadedFile = part;
break;
}
}
然后,我存储此Part
对象以供以后使用(无法立即使用)。代码有点复杂,但本质上类似于:
// List of uploaded files pending
// List declared as:
// protected List<Part> uploadedFiles;
synchronized(this.uploadedFiles) {
this.uploadedFiles.add(uploadedFile);
}
稍后,我尝试从另一个线程获取文件。
// Assume that the method is synchronized
Part reqrievedFile = myUploadService.getFileFromArray();
synchronized(retrievedFile) {
doSomething(retrievedFile.getInputStream());
最后我在使用5分钟后删除了文件:
retrievedFile.delete();
在Eclipse中进行测试时,效果很好,该文件可用,我可以对其进行处理。
但是当将此功能添加到测试代码中并上传到测试Tomcat服务器时,测试人员会遇到此错误:
IOException:C:\ apache-tomcat-8.5.34 \ work \ Catalina \ localhost \ Projectname \ upload_9357ad4d_193f_40fc_96d6_b6e4b9e3c82a_00000001.tmp (系统找不到指定的文件)