Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 处理多部分/表单数据_Java_Ajax_Jsp_File Upload - Fatal编程技术网

Java 处理多部分/表单数据

Java 处理多部分/表单数据,java,ajax,jsp,file-upload,Java,Ajax,Jsp,File Upload,我在jsp中使用XMLHttpRequest()进行文件上传,当我在控制器中请求.getContentType()时,我得到: multipart/form-data; boundary=---------------------------4664151417711. 此外,我不知道如何在我的控制器中获取文件和内容。请任何人帮忙 更新-- 我在我的jsp中做这件事 function fileUpload() { var url= document.getElementById("urlId

我在jsp中使用
XMLHttpRequest()
进行文件上传,当我在控制器中请求.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) {
    };                    
   }   
在我的控制器中--


此外,我还想到了如何获取上传文件的内容和文本字段的值,即控制器中的URL。我得到的类型是多部分/表单数据

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

从他们的产品中复制的最简单的示例如下所示:

@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()
}

考虑添加附加信息。通过添加代码片段,您可以让人们知道您的代码的作用。在当前的表单中,很难猜出哪里出了问题。只要看一下标签,我就可以想象您正试图使用ajax请求上传一个文件。出于安全原因,您不能在ajax请求中执行此操作,最好使用一个已经可以处理ajax交互的组件(它使用iframe来处理ajax请求)。@luigimendoza HTML5已经支持此功能。虽然,它不会在所有浏览器中都可用。@Ck-这是我在我的链接中发布的库的工作:利用与浏览器的交互,支持(或不支持)ajax文件上载,并为程序员的工作提供便利。@LuiggiMendoza啊,好的,我现在明白了。我知道蓝精灵。第一眼看到你之前的评论,我想你的意思是我们不能用普通的JavaScript来做。我想他想用JavaScript来做这件事JS@kromit这没有任何意义。。。为什么他要谈论上传、jsp和控制器?
@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()
}