Jag*_*mar 5 ajax upload jquery file
从最新版本的 Chrome 版本 83.0.4103.61(官方构建)(64 位)Jquery $.AjaxFileUpload 不起作用,如果有人有想法请帮助我,这个 AJAX 调用在旧版本的 chrome 和其他浏览器中工作正常firefox 等。只有最新版本的 chrome 有问题这里是代码:
JSP 代码就像
<input type="file" id="fileform-a04d99a8-3cc0-49af-868d-48bdfd26f448" name="files" class="add-attachment-input" style="position: absolute; top: -100000px;" multiple="" >
Run Code Online (Sandbox Code Playgroud)
Javascript:
$("#fileform-" + code).AjaxFileUpload({
action: "/claims/post/attachment/",
onSubmit: function(element, filename) {
return {jobcode: code};
},
onComplete: function(filename, response) {
mci.claims.handleAttachmentResponse(code, $thisitem, filename, response);
}
});
Run Code Online (Sandbox Code Playgroud)
代码:
@RequestMapping(value = "/post/attachment/", method = RequestMethod.POST, produces = "text/html")
@ResponseBody
public String addAttachments(@RequestParam("files")
final List<MultipartFile> files, @RequestParam("jobcode") String jobcode)
{
jobcode = XSSFilterUtil.filter(jobcode);
final Map<String, String> result = new HashMap<>();
for (final MultipartFile file : files)
{
result.put(file.getOriginalFilename(), claimsFacade.addAttachmentToClaim(file, jobcode));
}
return jsonFacade.mapToJsonString(result);
}
Run Code Online (Sandbox Code Playgroud)
还有另一个 jQuery 插件依赖于创建 iframe,src="javascript:false"而且 chrome 83 似乎不再喜欢它了(https://github.com/jquery-form/form/issues/571)。它看起来像(根据那里发布的 jsFiddle)chrome 83 在使用该 src 属性值时阻止调用(我自己已经用 验证过Chrome 83.0.4103.61-1),但如果 src 属性值为 则不会阻止它about:blank。
根据您使用的插件的源,它会创建一个具有上述 src 属性值的 iframe ( https://github.com/davgothic/AjaxFileUpload/blob/master/jquery.ajaxfileupload.js#L99 ),因此问题。将该行更改为这样应该可以解决问题:
.append('<iframe src="about:blank" name="' + id + '" id="' + id + '" style="display: none;"></iframe>');
Run Code Online (Sandbox Code Playgroud)
尽管该插件在过去几年中没有太大变化(上次提交是在大约 2 年前),但您可以通过此更改执行 Pull 请求。