Struts2 struts 2文件上传和保存问题
文件已成功上载,但未保存 这是我动作类中的函数Struts2 struts 2文件上传和保存问题,struts2,Struts2,文件已成功上载,但未保存 这是我动作类中的函数 public String uploadPhoto() { HttpServletRequest request = ServletActionContext.getRequest(); String filePath = request.getContextPath(); File fileToCreate = new File(filePath, this.userImageFileName); try {
public String uploadPhoto()
{
HttpServletRequest request = ServletActionContext.getRequest();
String filePath = request.getContextPath();
File fileToCreate = new File(filePath, this.userImageFileName);
try {
FileUtils.copyFile(this.userImage, fileToCreate);
Users user = userDao.findByUsername((String)session.get("username"));
user.setPhotoName(filePath+userImageFileName);
userDao.save(user);
} catch (IOException e) {
addActionError(e.getMessage());
e.printStackTrace();
return INPUT;
}
return "UPLOADED";
}
我使用了断点,所有语句都成功执行
但是我在我的上下文根目录中没有看到任何文件Sumit
Struts2具有内置文件上载功能,您可以非常轻松地使用该功能。使用内置拦截器上载文件。
这里是相同的链接
这个拦截器将为您提供文件内容,现在在Action类中,它将为您提供如何使用IO系统保存文件的方法
另外请注意,struts2会将文件置于临时上下文中,当拦截器以相反顺序调用时,它会清理上下文,因此请确保使用IO保存上载的文件。我找到了解决方案,我设置了错误的路径 而不是
HttpServletRequest request = ServletActionContext.getRequest();
String filePath = request.getContextPath();
应该是
String filePath = ServletActionContext.getServletContext().getRealPath("/");
我确实这样做了,我说图像上传很好,但是当我使用FileUtils.copyFile(this.userImage,fileToCreate)保存它时;它没有被保存请在回答之前仔细阅读问题只需检查Struts2拦截器上载的内容的大小,如果这是正确的,则文件保存方式中存在一些问题。Struts仅提供上载文件并将其放置在临时区域的方式,您如何保存该文件不在其范围内,请检查这方面,希望对您有所帮助