Ajax提交FormData对象,Struts2的Action中如何获得
兄弟们,以下是我的代码:
JS:
var K = new XMLHttpRequest()
K.open("POST", "file_uploadFile?fileSize=288", true);
K.setRequestHeader("Content-Type", "multipart/form-data; boundary=" +
"------multipartformboundary"+ (new Date).getTime());
var G = new FormData();
G.append("file", E.getFile());
K.send(G);
问题:
1、Struts2 Action中如何获得JS中append到FormData中的"file"值?
2、Struts2中的request是MultiPartRequestWrapper,如何转化为HttpServletRequest?
先谢谢大家~~
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(18)
回复
问题那是 HTML5,不是 HTML
如果还没解决的话,今儿决定一试
呜呜~~还没解决。我查了很多资料,有关HTML5,通过FormData模拟表单提交。但我的问题,就是找不到真正原因。先谢谢兄弟了。
jquery.form.js 可以实现上传的哟。
chrome / struts2 环境下正常
Form:
Js :
action的代码和配置没啥特别的地方
private File uploadFile;
private String uploadFileFileName;
private String uploadFileContentType;
回复
嗯,我这个前端页面就是HTML5的。
Ajax 是不支持文件上传的 ! 你可以通过
jquery.form 这个插件来实现文件上传表单的处理。
HTML5,Ajax传递FormData,应该是可以的。能否看一下我问题中的代码,指出真正的问题呢,谢谢
回复
兄弟,看一下我和@坑主的往返回复。已经使用Struts2上传文件的方式来处理,但依然有问题。
那这样的话你使用strust2的标准就行,google搜下,很多
回复
试过如下操作,仍然获得不了file: Action代码: private File file; public void setFile(File file) { this.file = file; }
回复
struts-file.xml中: <interceptor-ref name="fileUpload"></interceptor-ref> <interceptor-ref name="defaultStack"></interceptor-ref>
回复
FileUploadInterceptor 加断点看看
回复
跟踪时,发现:fileParameterNames.hasMoreElements()返回false
ajax 不可以提交文件
哈哈,正解。周六晚上也发现了这个问题,就搞定了。
有一处错误, 如果使用了 FormData 的话, 那么不应该在 Request Headers 里设置 Content-Type。.因为在生成 FormData 的时候, 浏览器自己生成了一个Boundary, 而我们设定的 Boundary 和浏览器生成的是不一样的. 所以会导致服务器无法识别.所以我把之前发给你的JS代码去掉了:K.setRequestHeader(...)的代码
刚注意到你的 requestHeader 设错了吧,boundary 不是自动生成的么