【问题标题】:processing multipart/form-data处理多部分/表单数据
【发布时间】:2012-11-17 03:07:50
【问题描述】:

我在我的 jsp 中使用 XMLHttpRequest() 进行文件上传,当我在控制器中使用 request.getContentType() 时,我得到:

multipart/form-data; boundary=---------------------------4664151417711.

此外,我不知道如何获取文件并在我的控制器中获取它的内容。请任何人帮助。

更新—— 我在我的 jsp 中这样做。

 function fileUpload() {
var url= document.getElementById("urlId").value;
 var file= document.getElementById("xslId").files[0];
 var formdata = new FormData();
 formdata.append("url", url);
 formdata.append("file", file);
 var xhr = new XMLHttpRequest();       
 xhr.open("POST","http://localhost:8080/XlsUpload/openSource.htm", true);
 xhr.send(formdata);
 xhr.onload = function(e) {
    };                    
   }   

在我的控制器中——

 public void openSource(@ModelAttribute("domTool") DomTool   domTool,HttpServletRequest     request,HttpServletResponse response){
     String type=request.getContentType();

此外,我对如何获取上传文件的内容和文本字段的值(即控制器中的 URL)感到震惊。我得到的类型是 multipart/form-data

【问题讨论】:

  • 考虑添加更多信息。通过添加代码 sn-p,您可以让人们知道您的代码做了什么。在目前的形式下,很难猜出哪里出了问题。
  • 仅通过查看标签,我可以想象您正在尝试使用 ajax 请求上传文件。出于安全原因,您不能在 ajax 请求中执行此操作,最好使用已经处理 ajax 交互的组件,例如 blueImp jquery file upload(它使用 iframe 来处理 ajax 请求 )。
  • @LuiggiMendoza HTML5 已经支持这一点。虽然,它不会在所有浏览器中都可用。
  • @Ck- 这就是我在链接中发布的库的工作:利用与支持(或不支持)ajax 文件上传的浏览器的交互,并为程序员的工作提供便利。
  • @LuiggiMendoza 啊好的,我现在明白了。我知道 blueImp。乍一看你之前的评论,我认为你的意思是我们不能用普通的 JavaScript 来做到这一点。

标签: java ajax jsp file-upload


【解决方案1】:

有一个名为 commons-fileupload 的 Apache commons 解决方案用于解析多部分内容。你可以找到它here

从他们的tutorial 复制的最简单的示例如下所示:

@Override
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    FileItemFactory factory = new DiskFileItemFactory();
    ServletFileUpload upload = new ServletFileUpload(factory);
    List items = upload.parseRequest(request);

    // iterate over items (i.e. list of FileItem) and access 
    // the content with getInputStream()
}

【讨论】:

  • 我认为他想在 JS 中这样做
  • @kromit 它没有任何意义......他为什么要谈论上传、jsp 和控制器?
猜你喜欢
  • 1970-01-01
  • 2021-02-20
  • 1970-01-01
  • 2013-04-27
  • 1970-01-01
  • 2010-11-03
  • 2021-04-06
  • 2011-07-30
  • 1970-01-01
相关资源
最近更新 更多