2012-07-24 37 views
1

我正在使用弹簧MVC文件上传,它在Firefox和Chrome中工作正常,但在IE浏览器显示上传失败..下面是我的jsp页面,其中包括fileuploader函数。valums fileuploader不工作在IE 9下使用弹簧

<div id="file-uploader-demo1" style="float: left;padding-top: 10px"></div>  

</div> 

<script>   
    function createUploader(){    
     var uploader = new qq.FileUploader ({ 
      element: document.getElementById('file-uploader-demo1'), 
      action: '/Flas_ _/commu-____/insertFile;jsessionid=${sessionId}', 
      headers: {'Content-type':'multipart/form-data'}, 
      multipleFileUpload: false, 
      debug: true 
     });   
    } 
    window.onload = createUploader;  
</script> 

这里是在Chrome我的jsp页面,IAM包括FileUploader.js文件中的操作标签调用(如下所示)我相应的控制器..

@RequestMapping(value = "/insertFile", method = RequestMethod.POST) 
public String fileUpload(@RequestParam("qqfile") String filename1,ModelMap map, 
     HttpServletRequest request,HttpServletResponse response) throws IOException { 



    PrintWriter writer = null; 
    InputStream is = null; 
    FileOutputStream fos = null; 

     try { 
      writer = response.getWriter(); 
     } catch (IOException ex) { 
      //log(OctetStreamReader.class.getName() + "has thrown an exception: " + ex.getMessage()); 
     } 
     String filename = request.getHeader("X-File-Name"); 
     this.setFILEUPLOAD(filename); 
     try { 
      is = request.getInputStream(); 
      fos = new FileOutputStream(new File("F:/images/" + filename)); 
      IOUtils.copy(is, fos); 
      response.setStatus(response.SC_OK); 
      writer.print("{success: true}"); 
     } catch (FileNotFoundException ex) { 
      response.setStatus(response.SC_INTERNAL_SERVER_ERROR); 
      writer.print("{success: false}"); 
      // log(OctetStreamReader.class.getName() + "has thrown an exception: " + ex.getMessage()); 
     }catch (IOException ex) { 
      response.setStatus(response.SC_INTERNAL_SERVER_ERROR); 
      writer.print("{success: false}"); 
      // log(OctetStreamReader.class.getName() + "has thrown an exception: " + ex.getMessage()); 
     } finally { 
      try { 
       fos.close(); 
       is.close(); 
      } catch (IOException ignored) { 
      } 
     } 
     writer.flush(); 
     writer.close(); 

    return "do-nothing"; 
} 

虽然和FIREFOX其工作正常,我得到要在本地驱动器中存储的文件。但它不适用于IE 9.我该怎么办我没有得到。

任何解决方案, PLZ帮助谢谢。

回答

0

我通过实施两种控制器方法解决了另一个问题(在IE中工作,而不是在FF中工作)。我没有通过JavaScript上传器配置发送explizit头文件。 (对于IE)

一种方法具有附加RequestMapping-选项: headers = { "content-type=multipart/form-data" }

用于IE的RequestParam是MultipartFile。从那里你将获得文件名和内容。 IE使用的正常分段上传的请求体不仅包含文件内容,还包含与Firefox一起上传的ajax。它也具有多部分信息,如文件名和边界。 MultipartFile可以为你处理。

据我所知,必须进行一些常规设置才能使webapp处理多部分文件上传。但那是另一个问题。