Struts2 对XHR请求(ajax + formData 上传的文件)拿不到文件
Struts2 对文件上传是通过 file upload 拦截器实现的,具体引入方法见这里。然而 File Upload 拦截器似乎对于 XHR 过来的文件上传请求无法响应。
MMP老子试了半天。
用ajax + formData 的方式 文件能传出去(在浏览器HTTP请求中能看到)
HTML:
<input id="file" type="file" name="upload"/> <input id="uploadBtn"class="btn-b-m" type="button" value="上传" />
JS:
$("#uploadBtn").click(function () { var formData = new FormData(); formData.append("upload", $("#file").get(0).files[0]); jQuery.ajax({ enctype: 'multipart/form-data', url: '/json/blackWhiteLimit/fileUpload.action', type: "post", data: formData, processData: false,//用于对data参数进行序列化处理 这里必须false contentType: false, //必须 success: function (json) { alert("返回数据了" + json); } }); });
后端:Action
public class BlackWhiteLimitAction extends BaseAction { private File upload; // 上传上来的文件(和前端input框中的name值相对应) private String uploadFileName; // 上传上来文件的文件名(Struts2固定写法XXXFileName) private String uploadContentType; // 上传上来的文件的文件类型(Struts2固定写法XXXContentType) // 省略getter Setter /** * 文件上传服务 * * @return */ public String fileUpload() { System.out.println("*******************进入方法****************"); try { // 校验 if (upload == null || uploadFileName == null || uploadContentType == null) { fileUrlJson = "error:没有成功上传文件,请重新选择上传"; return "fileUrlResult"; } File file = getUpload(); // 拿到前台传过来的文件 String fileName = getUploadFileName(); // 拿到文件名 System.out.println("fileName:" + fileName); // 逻辑省略..... fileUrlJson = "success"; // 返回成功 return "fileUrlResult"; } catch (Exception e) { log.error("BlackWhiteLimitAction.fileUpload出现异常:" + e); fileUrlJson = "error"; // 返回失败 return "fileUrlResult"; } }
拦截器配置这里没展示,(因为有些隐晦)想看可以自己搜索拦截器配置
就这样上传struts2 死活那不到文件
同样的后端代码,我用from 表单提交就能拿到。用ajax + fromData 就不行
也有人遇到了同样的问题 传送门
Struts2 对文件上传是通过 file upload 拦截器实现的,具体引入方法见这里。然而 File Upload 拦截器似乎对于 XHR 过来的文件上传请求无法响应,具体原因未去探究。也希望知道的人给个提示,谢谢。
解决方式:
用:jquery.form.min.js
:TODO 回家
相关推荐
kentrl 2020-11-10
结束数据方法的参数,该如何定义?-- 集合为自定义实体类中的结合属性,有几个实体类,改变下标就行了。<input id="add" type="button" value="新增visitor&quo
ajaxyan 2020-11-09
zndy0 2020-11-03
学留痕 2020-09-20
Richardxx 2020-11-09
learningever 2020-09-19
chongxiaocheng 2020-08-16
ajaxhe 2020-08-16
lyqdanang 2020-08-16
curiousL 2020-08-03
TONIYH 2020-07-22
时光如瑾雨微凉 2020-07-19
83510998 2020-07-18
坚持着执着 2020-07-16
jiaguoquan00 2020-07-07
李永毅 2020-07-05
坚持着执着 2020-07-05