如何在struts2中进行文件上传可选?

时间:2014-05-03 10:21:14

标签: java file-upload struts2

我正在使用Struts2构建Web应用程序。还有一小部分涉及文件上传。文件上传效果很好。但是,当我选择不上传文件时,会抛出NullPointerException。我在代码中处理此问题的唯一方法是catch(NullPointerException NPE)。并且部分代码会重复出现。我希望避免这种情况。

有没有办法在Struts2中处理NULL文件上传?

我的HTML文件:

<s:file style="height:auto;width:550px;display:inline;align:center;" name="userImage" cssClass="text input" onchange="checkFile(this)"/>

我的Java动作代码处理这个:

try{
String filePath = servletRequest.getSession().getServletContext().getRealPath("/");
System.out.println("Server path:" + filePath);
File fileToCreate = new File(filePath, this.userImageFileName);
FileUtils.copyFile(this.userImage, fileToCreate);}

catch(NullPointerException NPE){//if I choose to NOT upload a file}
catch(Exception E){//some code}

我已经尝试了getUserImage()==null,但它没有帮助。我绝对来处理 {/ 1}}块内的其余代码吗?

1 个答案:

答案 0 :(得分:1)

最有可能的是,NullPointerException被抛出以下两行之一

File fileToCreate = new File(filePath, this.userImageFileName);
FileUtils.copyFile(this.userImage, fileToCreate);

因为this.userImageFileName和/或this.userImagenull,如果您没有上传文件。

所以,试试这个:

if(this.userImageFileName != null && this.userImage != null){
   File fileToCreate = new File(filePath, this.userImageFileName);
   FileUtils.copyFile(this.userImage, fileToCreate);
}

现在,由于您提前检查了NullPointerException,因此不会发生null