struts2多文件上传,有2个文件域,当选择2个都传文件时,可以正常上传,当选择一个时不能上传文件,控制台输出content-type not allowed,应该是拦截器拦截到第二个文件域为空了请问怎么才能只选择一个文件域也能上传?

解决方案 »

  1.   

    代码如下        <form id="imageForm" method="post" action="image.action"  
                enctype="multipart/form-data">   
                <input name="file" type=file value=''>                           
                <input type="submit" value="上传">  
            </form>  
      

  2.   

    多文件htnl代码如下        <form id="imageForm" method="post" action="image.action"  
                enctype="multipart/form-data">   
                <input name="file" type=file value=''>  
                <input name="file" type=file value=''>                         
                <input type="submit" value="上传">  
            </form>
      

  3.   

    //判断是否有上传文件
    boolean isMultipart = ServletFileUpload.isMultipartContent(request);
    if (isMultipart) {
                                    //得到项目所在外部容器
    String filepath = this.getClass().getClassLoader().getResource("/").getPath();
    String filepath_a = filepath.substring(0, filepath.length() - 16);
    //设置项目上传所在文件夹
    String newfilepath = filepath_a+ "sc";
    File dir = new File(newfilepath);
    if (!dir.exists()) {
    dir.mkdirs();
    }
    // 文件名用时间戳来表示
    long time = new Date().getTime();
    String filename = time +"";
    String path = newfilepath + "/" + filename;
                                    //开始解析
    FileItemFactory factory = new DiskFileItemFactory();
    ServletFileUpload upload = new ServletFileUpload(factory);
    Iterator items = null;
    try {
    items = upload.parseRequest(request).iterator();
    } catch (FileUploadException e1) {
    e1.printStackTrace();
    }
    while (items.hasNext()) {
    FileItem item = (FileItem) items.next();
    if (!item.isFormField()) {
    File uploadedFile = new File(path + item.getName());
    try {
    item.write(uploadedFile); attaches.add(attach);
    } catch (Exception e) {
    //e.printStackTrace();
    }
    }
    }需要有commons-fileupload 架包 和commons-io架包
      

  4.   

    如果多个文件上传1.action:文件域属性定义成List形式List<File> listFile;有get/set。2.页面file控件name使用listFile。
      

  5.   

    谢谢,我试下我定义的数组
    private File[] file; 
      

  6.   

    是啊,没有判断,应该写个拦截器判断把,在action中不行
      

  7.   

    private File[] file;没有问题。
      

  8.   

    不可能没问题,我用的就不行啊,多文件域上传,只选择一个上传时不行啊提示content-type not allowed...,传不上去,我先要只选一个时也能上传