action的changePhoto()函数处理文件上传,其中savePath已经在struts.xml中指定好了
public String changePhoto()throws Exception{
FileInputStream is = new FileInputStream(file);
File destFile = new File(savePath,fileFileName);
FileOutputStream os = new FileOutputStream(destFile);
byte[] buffer = new byte[1024];
int length = 0;
while((length = is.read(buffer)) > 0){
os.write(buffer,0,length);
}
is.close();
os.close();
return SUCCESS;
}
前台也设置取得上传文件的文件名和类型
<s:property value = "fileFileName"/>
<s:property value = "fileContentType"/>
当我运行程序时后台没有报错 前台也正确取得了上传文件的文件名和类型
但是在指定的文件夹里却找不到我上传的文件 这是怎么回事

解决方案 »

  1.   


    可是发现了新问题 我在struts.xml中把savePath设置为"\photo" 
    <param name="savePath">/photo</param>
    action中对应的语句为
    public String getSavePath()throws Exception{
    return ServletActionContext.getServletContext().getRealPath(savePath);
    }
    public void setSavePath(String savePath) {
    this.savePath = savePath;
    }
    按理应该上传至WebContent文件夹下的photo文件夹中(我的jsp页面也处于WebContent文件夹下) 但是却上传到了我的E盘的根目录下的photo文件夹里同时我在一个show.jsp页面中有如下语句
    <img src="photo/5.jpg" />
    其中show.jsp页面与photo文件夹处于同一文件夹下(都处于WebContent文件夹下) 但是页面上显示不出来图片
    只有我把绝对路径输入
    <img src="E:\a\J2EE\workspace\DemoSNS\WebContent\photo\5.jpg" />
    页面才能显示出图片来 实在不理解这是怎么回事
      

  2.   


    如果你是用IDE自带的Tomcat那么在运行jsp的时候会加载到Tomcat中。这时你用相对路径就要注意了!!
    一般在测试的时候你就写绝对路径。等到项目完成之后部署到服务器时再去配置相对路径。