上传后无法检索由javax HttpServlet创建的临时文件

时间:2019-02-08 10:18:41

标签: java tomcat servlets

我有一个问题仅在将Web应用程序打包到WAR中并安装在Tomcat服务器上时发生-在开发过程中不会发生。

我要做的是:

  1. 我从Part(已上传的文件)中检索了HttpServletRequest

        Part uploadedFile = null;
        for(Part part: parts) {
            if(part == null)
                continue;
            if(uploadFieldName.equalsIgnoreCase(part.getName())) {
                uploadedFile = part;
                break;
            }
        }
    
  2. 然后,我存储此Part对象以供以后使用(无法立即使用)。代码有点复杂,但本质上类似于:

    // List of uploaded files pending
    // List declared as:
    // protected List<Part> uploadedFiles;
    synchronized(this.uploadedFiles) {
        this.uploadedFiles.add(uploadedFile);
    }
    
  3. 稍后,我尝试从另一个线程获取文件。

    // Assume that the method is synchronized
    Part reqrievedFile = myUploadService.getFileFromArray();
    synchronized(retrievedFile) {
         doSomething(retrievedFile.getInputStream());
    
  4. 最后我在使用5分钟后删除了文件:

    retrievedFile.delete();
    

在Eclipse中进行测试时,效果很好,该文件可用,我可以对其进行处理。

但是当将此功能添加到测试代码中并上传到测试Tomcat服务器时,测试人员会遇到此错误:

  

IOException:C:\ apache-tomcat-8.5.34 \ work \ Catalina \ localhost \ Projectname \ upload_9357ad4d_193f_40fc_96d6_b6e4b9e3c82a_00000001.tmp   (系统找不到指定的文件)

0 个答案:

没有答案