当前位置: 代码迷 >> J2EE >> Struts 2多文件上传路径有关问题
  详细解决方案

Struts 2多文件上传路径有关问题

热度:84   发布时间:2016-04-22 01:53:51.0
Struts 2多文件上传路径问题
不多说了!直接贴代码!!
upload(是放在WebRoot下的)
Java code
public String execute() throws Exception{        //取得需要上传的文件数组        File[] files = getUpload();        //遍历每个需要上传的文件        for (int i = 0; i < files.length; i++) {            System.out.println(files[i]);            //以服务器的文件保存地址和源文件名建立上传文件输出流            FileOutputStream fos = new FileOutputStream(getSavePath()+"\\"+getUploadFileName()[i]);            //以每个需要上传的文件建立输入流            FileInputStream fis = new FileInputStream(files[i]);            //将每个需要上传的文件写入            byte[] buffer = new byte[1024];            int length = 0;            while ((length=fis.read(buffer))>0) {                fos.write(buffer,0,length);            }            fos.close();        }        return SUCCESS;    }



XML code
<package name="mystruts" extends="struts-default">        <action name="upload" class="com.app.action.UploadAction">            <!-- 动态设置Action的savePath属性 -->            <param name="savePath">/upload</param>            <!-- 配置文件上传的拦截器 -->                                   <interceptor-ref name="fileUpload">                <!-- 配置允许上传的文件类型 -->                <param name="allowedTypes">image/png,image/gif,image/jpeg</param>                <param name="maximumSize">20480000</param>            </interceptor-ref>                        <!-- 配置系统默认的拦截器 -->            <interceptor-ref name="defaultStack"></interceptor-ref>            <result name="success">/success.jsp</result>            <result name="input">/upload.jsp</result>        </action>    </package>


个人感觉应该是没有问题的:但是上传的时候就是报如下错误:
java.io.FileNotFoundException: \upload\gyutiu.jpg (系统找不到指定的路径。)
java.io.FileOutputStream.open(Native Method)
java.io.FileOutputStream.<init>(FileOutputStream.java:179)
java.io.FileOutputStream.<init>(FileOutputStream.java:70)
com.app.action.UploadAction.execute(UploadAction.java:64)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
。。。。。。。。。。。。。
求解!!!!!!!!

------解决方案--------------------
路径错了
getSavePath()+"\\"+getUploadFileName()[i] 值应该是部署路径+[自定义目录+]文件名
FileNotFoundException: \upload\gyutiu.jpg 至少应该是个绝对路径
另外你代码没贴全 只能猜了
你的输入流是通过files[i]拿到的 那你得保证Action中有filesFileName和filesContentType两个属性
Java code
private File[] files;    private File[] fileFileName;    private File[] fileContentType;//getters && setterspublic String execute() throws Exception {      for (int i = 0; i < files.length; i++) {                   //...            String root = ServletActionContext.getRequest().getSession()                    .getServletContext().getRealPath("/upload");                      //加点东西  保证目录: %deployPath%+"/upload" 存在            File destFile = new File(root, fileFileName.get(i));                   //...        }
  相关解决方案