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仅提供上载文件并将其放置在临时区域的方式,您如何保存该文件不在其范围内,请检查这方面,希望对您有所帮助