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);
}
}