javascript使用文件发送post参数

javascript使用文件发送post参数,java,extjs,upload,multipartform-data,payload,Java,Extjs,Upload,Multipartform Data,Payload,尝试上载带有某些参数的文件时,我已将Ext upload plugin更改为上载带有post参数的文件。 extuploadercode(ux.upload.uploader.FormDataUploader): 我尝试了以下两行代码: formData.append("ali","ghasemi"); formData.append("alisd","ghassdf"); 但是,参数以以下方式添加到请求有效负载中: ------WebKitFormBoundarylAKSY21NN15kqW

尝试上载带有某些参数的文件时,我已将
Ext upload plugin
更改为上载带有post参数的文件。
extuploader
code(ux.upload.uploader.FormDataUploader):

我尝试了以下两行代码:

formData.append("ali","ghasemi");
formData.append("alisd","ghassdf");
但是,参数以以下方式添加到请求有效负载中:

------WebKitFormBoundarylAKSY21NN15kqWct
Content-Disposition: form-data; name="ali"

ghasemi
------WebKitFormBoundarylAKSY21NN15kqWct
Content-Disposition: form-data; name="alisd"

ghassdf
------WebKitFormBoundarylAKSY21NN15kqWct
Content-Disposition: form-data; name="icon-info.gif"; filename="icon-info.gif"
Content-Type: image/gif

GIF89a 
如何在服务器端获取
post
参数,或者如何在客户端正确设置这些参数?

我正在用JavaSpring编写代码
HttpServletRequest
不知道这些参数

public JSONObject upload(HttpServletRequest request, HttpServletResponse response, @RequestBody String body) throws IOException {
    String ali = request.getParameter("ali"); // returns null
} 
任何用Ext或纯javascript或
Java-spring-controller
的回答都将不胜感激。

这里有一个相关的问题:

您粘贴的请求负载是FormData的正确格式,我们也可以说是多部分/表单数据

在php中: 您可以使用$\u POST获取这些参数,例如ali、alisd。 并使用$\u文件获取上传文件。

我找到了答案。
默认情况下,版本3.0之前的Servlet API不支持多部分/表单数据编码请求。Servlet API默认使用
application/x-www-form-urlencoded
编码解析参数。使用不同的编码时,
request.getParameter()
调用将全部返回
null
。当您已经使用Servlet 3.0(Glassfish 3、Tomcat 7等)时,可以使用
HttpServletRequest\getParts()
。另请参阅此博客以了解扩展示例

在Servlet 3.0之前,解析
多部分/表单数据
请求的事实标准是使用Apache Commons FileUpload。只要仔细阅读它的用户指南和常见问题部分,学习如何使用它。在此之前,我已经发布了一个带有代码示例的答案(它还包含一个针对Servlet3.0的示例)

java代码:

        Map properties = new HashMap();
        List<FileItem> items;

        items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
        for (FileItem item : items) {
            if (item.isFormField()) {
                String fieldName = item.getFieldName();
                String fieldValue = item.getString();
                properties.put(fieldName, fieldValue);
            } else {

                String tempString = "d:/io";
                //String fileName = FilenameUtils.getName(item.getName());
                //fileNameWithOutExt = FilenameUtils.removeExtension(fileName);
                file = new File(tempString + '/' + item.getName());

                item.write(file);
            }
        }
Map properties=newhashmap();
清单项目;
items=new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
用于(文件项:项){
if(item.isFormField()){
字符串fieldName=item.getFieldName();
String fieldValue=item.getString();
properties.put(字段名、字段值);
}否则{
String tempString=“d:/io”;
//字符串fileName=FilenameUtils.getName(item.getName());
//fileNameWithOutExt=FilenameUtils.removeExtension(文件名);
file=新文件(tempString+'/'+item.getName());
项目。写入(文件);
}
}

我正在用java spring编写代码
HttpServletRequest
不知道这些参数。我在[this stackoverflow question][1]中找到了我的答案。[1]:
        Map properties = new HashMap();
        List<FileItem> items;

        items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
        for (FileItem item : items) {
            if (item.isFormField()) {
                String fieldName = item.getFieldName();
                String fieldValue = item.getString();
                properties.put(fieldName, fieldValue);
            } else {

                String tempString = "d:/io";
                //String fileName = FilenameUtils.getName(item.getName());
                //fileNameWithOutExt = FilenameUtils.removeExtension(fileName);
                file = new File(tempString + '/' + item.getName());

                item.write(file);
            }
        }