Ajax提交FormData对象,Struts2的Action中如何获得

发布于 2021-11-21 15:22:32 字数 656 浏览 752 评论 18

兄弟们,以下是我的代码:

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(18

心舞飞扬 2021-11-22 11:26:43

回复
问题那是 HTML5,不是 HTML

少女净妖师 2021-11-22 11:26:43

如果还没解决的话,今儿决定一试

吃颗糖壮壮胆 2021-11-22 11:26:43

呜呜~~还没解决。我查了很多资料,有关HTML5,通过FormData模拟表单提交。但我的问题,就是找不到真正原因。先谢谢兄弟了。

柠檬 2021-11-22 11:26:43

jquery.form.js 可以实现上传的哟。

女中豪杰 2021-11-22 11:26:43

chrome / struts2 环境下正常

Form:

<form id="testHtml5" method="post" enctype="multipart/form-data">
    <input type="file" id="file" name="uploadFile">
    <input type="button" value="upload" id="btn">
</form>

Js :

var fd = new FormData();
    fd.append("uploadFile", $('#file')[0].files[0]);
    var xhr = new XMLHttpRequest();
    xhr.open("POST", "/ctx/action/upload", true);
    xhr.send(fd);

action的代码和配置没啥特别的地方

    private File uploadFile;

    private String uploadFileFileName;

    private String uploadFileContentType;

爱的那么颓废 2021-11-22 11:26:42

回复
嗯,我这个前端页面就是HTML5的。

瀞厅☆埖开 2021-11-22 11:26:39

Ajax 是不支持文件上传的 ! 你可以通过
jquery.form 这个插件来实现文件上传表单的处理。

筱果果 2021-11-22 11:26:38

HTML5,Ajax传递FormData,应该是可以的。能否看一下我问题中的代码,指出真正的问题呢,谢谢

高跟鞋的旋律 2021-11-22 11:26:37

回复
兄弟,看一下我和@坑主的往返回复。已经使用Struts2上传文件的方式来处理,但依然有问题。

少女情怀诗 2021-11-22 11:26:37

那这样的话你使用strust2的标准就行,google搜下,很多

本王不退位尔等都是臣 2021-11-22 11:25:48

回复
试过如下操作,仍然获得不了file: Action代码: private File file; public void setFile(File file) { this.file = file; }

简单气质女生网名 2021-11-22 11:25:20

回复
struts-file.xml中: <interceptor-ref name="fileUpload"></interceptor-ref> <interceptor-ref name="defaultStack"></interceptor-ref>

网名女生简单气质 2021-11-22 11:24:48

回复
FileUploadInterceptor 加断点看看

丢了幸福的猪 2021-11-22 11:21:57

回复
跟踪时,发现:fileParameterNames.hasMoreElements()返回false

坏尐絯 2021-11-22 11:21:40

ajax 不可以提交文件

回忆凄美了谁 2021-11-22 10:45:38

哈哈,正解。周六晚上也发现了这个问题,就搞定了。

伪装你 2021-11-22 07:07:57

有一处错误, 如果使用了 FormData 的话, 那么不应该在 Request Headers 里设置 Content-Type。.因为在生成 FormData 的时候, 浏览器自己生成了一个Boundary, 而我们设定的 Boundary 和浏览器生成的是不一样的. 所以会导致服务器无法识别.所以我把之前发给你的JS代码去掉了:K.setRequestHeader(...)的代码

不乱于心 2021-11-22 04:39:39

刚注意到你的 requestHeader 设错了吧,boundary 不是自动生成的么

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文