2011-03-19 34 views
0

文件被上传成功,但它是没有得到保存Struts的文件上传和保存问题

这是在我的动作类

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"; 
} 

我用的断点功能,所有语句都被成功执行

但我没有看到我的上下文中的文件根

回答

0

我找到了解决办法上传的文件,我设置了不正确的路径

而不是

HttpServletRequest request = ServletActionContext.getRequest(); 
String filePath = request.getContextPath(); 

应该

String filePath = ServletActionContext.getServletContext().getRealPath("/"); 
0

Sumit !!

Struts2构建了文件上传功能,您可以非常轻松地使用该功能。使用拦截器中的上传文件。 这里是链接在同一

File Upload

这个拦截器将提供你的文件内容和现在的Action类的你的方法,你将如何使用IO系统保存文件。

还要注意的是struts2中将会把文件中的温度范围内,它会清理上下文时拦截器会以相反的顺序被调用,所以请务必保存使用IO

+0

我做的确如此,我说图像上传正常,但是当我使用FileUtils.copyFile(this.userImage,fileToCreate)保存时;它没有得到保存请在响应之前仔细阅读问题 – 2011-03-19 15:09:11

+0

只需检查由Struts2拦截器上传的内容的大小,如果正确,则文件保存方式中存在一些问题.truts仅为您提供上传文件的方式并将其放置在温度区域,如何保存不在其范围内,只需检查此方面,希望它能帮助您 – 2011-03-19 15:41:11