Struts2 Fileupload在动作类中给出null文件

我正在尝试使用struts2 fileUpload拦截器在我的Web应用程序中实现文件上载过程。 下面是我的代码

的index.jsp

    

在struts.xml

    1024000 application/pdf  /viewChapters.jsp  

FileUploadAction.java

 public class FileUploadAction extends ActionSupport { private File fileUpload; private String contentType; private String fileName; private String destPath; /// setter and getter methods public String execute() { destPath="C:\\WebPortal_testing"; try { System.out.println("Source File Name:"+fileUpload); System.out.println("Destination File Name:"+fileName); File destFile= new File(destPath,fileName); FileUtils.copyFile(fileUpload, destFile); } catch(IOException exception) { exception.printStackTrace(); return ERROR; } return SUCCESS; } 

当我在index.jsp页面中选择一个pdf文件并单击上传按钮时,它会为动作类的fileUpload字段赋予null值。

我在调试模式下执行应用程序并给出了这个

 System.out.println("Source File Name:"+fileUpload); 

检查它返回的是什么,我得到null。

1.拦截器配置错误

FileUploadStack是:

      

然后你真正定义的是:

     1024000 application/pdf  

运用

  • fileUpload拦截器的两倍
  • 将您对maximumSize和allowedTypes的限制仅应用于第二个。

做就是了

  1024000 application/pdf  

2.文件属性错误

内容类型和文件名属性必须以文件属性名称开头。

在你的情况下:

 private File fileUpload; private String fileUploadContentType; private String fileUploadFileName; 

你可以在这个问题上找到一个完整的例子。


3.您正在打印文件而不是文件名

 System.out.println("Source File Name:"+fileUpload); 

这是文件,而不是文件名,而btw文件名是在另一个变量中传递的。


修复此问题并重试。 另请注意,当整个世界使用时,使用 as prefix是不安全 。 这样做没有任何好处,只有并发症。 只需使用 .