Java 上传文件时出现空指针异常
您好,从这段代码中,我得到了空指针异常,当我要读取uploadfilename时,我尝试了很多方法来解决这个问题,但这个问题没有解决。有人能帮我解决这个问题吗Java 上传文件时出现空指针异常,java,file-upload,struts2,Java,File Upload,Struts2,您好,从这段代码中,我得到了空指针异常,当我要读取uploadfilename时,我尝试了很多方法来解决这个问题,但这个问题没有解决。有人能帮我解决这个问题吗 public class ImportAction extends ActionSupport implements ServletRequestAware { private static final long serialVersionUID = 1L; private File uploadFile; pr
public class ImportAction extends ActionSupport implements ServletRequestAware {
private static final long serialVersionUID = 1L;
private File uploadFile;
private String uploadfileFileName;
private String uploadfileContentType;
private HttpServletRequest servletRequest;
public String getUploadfileFileName() {
return uploadfileFileName;
}
public void setUploadfileFileName(String uploadfileFileName) {
this.uploadfileFileName = uploadfileFileName;
}
public String getUploadfileContentType() {
return uploadfileContentType;
}
public void setUploadfileContentType(String uploadfileContentType) {
this.uploadfileContentType = uploadfileContentType;
}
public File getUploadFile() {
return uploadFile;
}
public void setUploadFile(File uploadFile) {
this.uploadFile = uploadFile;
}
RegisterDAO dao = new RegisterDAO();
/**
*
* @return
* @throws
* Exception
*/
@SuppressWarnings("unchecked")
@Override
public String execute() throws Exception {
String filePath = servletRequest.getSession().getServletContext().getRealPath("/");
System.out.println("filepath" + filePath);
System.out.println("file" + getUploadFile());
System.out.println("filename" + getUploadfileFileName());
File fileToCreate = new File(filePath, this.uploadfileFileName);
try {
FileUtils.copyFile(this.uploadFile, fileToCreate);
} catch (IOException e) {
addActionError(e.getMessage());
}
return SUCCESS;
// Model m = new Model();
// String result = m.fileimport(uploadFile, uploadfileFileName);
// String result = m.fileimport();
// if (result.equals(SUCCESS)) {
// return SUCCESS;
// } else {
// addActionError(getText(result));
// return "failure";
// }
}
@Override
public void validate() {
System.out.println("inside validate of LA");
}
@Override
public void setServletRequest(HttpServletRequest servletRequest) {
this.servletRequest = servletRequest; //To change body of generated methods, choose Tools | Templates.
}
我建议尝试从servlet上下文
getResourceAsStream
,而不是使用文件路径。这将适用于WAR文件
你需要考虑的另一个问题是,除了测试用例之外,文件甚至不太可能驻留在服务器上。对于远程用户来说,文件路径没有意义。“上载文件”将发生在不是服务器的机器上。对于这种情况,您的代码不正确。如果您将应用程序部署为WAR-following,则代码将返回null
String filePath = servletRequest.getSession().getServletContext().getRealPath("/");
这是错误的,请注意其他属性中的小f
,它应该是f
,因为文件字段名是uploadFile
这是有效的:
private File upload;
private String uploadFileName;
private String uploadContentType;
这一条也是有效的:
private File uploadFile;
private String uploadFileFileName;
private String uploadFileContentType;
不,你不能。只是输入流。您的要求不清楚。可能是重复的,并且已经回答了。您尚未更正变量名。至少读一下我们给你的答案。。。。。。。
private File uploadFile;
private String uploadFileFileName;
private String uploadFileContentType;