$.AjaxFileUpload 在 Chrome 版本 83.0.4103.61(官方构建)(64 位)的最新版本中不可用
$.AjaxFileUpload is not woking in latest version of Chrome Version 83.0.4103.61 (Official Build) (64-bit)
来自最新版本 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="" >
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);
}
});
Java代码:
@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);
}
还有另一个 jQuery 插件依赖于使用 src="javascript:false"
创建 iframe,但似乎 chrome 83 不再喜欢它 (https://github.com/jquery-form/form/issues/571)。看起来(根据那里发布的 jsFiddle)chrome 83 在使用该 src 属性值时阻止调用(我已经用 Chrome 83.0.4103.61-1
自己验证了它)但是如果 src 属性值不阻止它是 about:blank
。
根据您使用的插件的来源,它创建了一个具有上述 src 属性值 (https://github.com/davgothic/AjaxFileUpload/blob/master/jquery.ajaxfileupload.js#L99) 的 iframe,因此出现了问题。将该行更改为此行应该可以解决问题:
.append('<iframe src="about:blank" name="' + id + '" id="' + id + '" style="display: none;"></iframe>');
虽然插件在过去几年没有太大变化(最后一次提交是大约 2 年前),但您可以使用此更改进行合并请求。
在 jquery.ajaxfileupload.js 中将 src="about:blank" 更改为 src="javascript:false;",解决了我的问题
仅供参考 jquery 上传被 19-02-2020 Chrome 浏览器更新 83.0.4103.61 破坏了。 https://bugs.chromium.org/p/chromium/issues/detail?id=1084874
已在 03-06-2020 (83.0.4103.97) 版本中修复...呸。
来自最新版本 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="" >
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);
}
});
Java代码:
@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);
}
还有另一个 jQuery 插件依赖于使用 src="javascript:false"
创建 iframe,但似乎 chrome 83 不再喜欢它 (https://github.com/jquery-form/form/issues/571)。看起来(根据那里发布的 jsFiddle)chrome 83 在使用该 src 属性值时阻止调用(我已经用 Chrome 83.0.4103.61-1
自己验证了它)但是如果 src 属性值不阻止它是 about:blank
。
根据您使用的插件的来源,它创建了一个具有上述 src 属性值 (https://github.com/davgothic/AjaxFileUpload/blob/master/jquery.ajaxfileupload.js#L99) 的 iframe,因此出现了问题。将该行更改为此行应该可以解决问题:
.append('<iframe src="about:blank" name="' + id + '" id="' + id + '" style="display: none;"></iframe>');
虽然插件在过去几年没有太大变化(最后一次提交是大约 2 年前),但您可以使用此更改进行合并请求。
在 jquery.ajaxfileupload.js 中将 src="about:blank" 更改为 src="javascript:false;",解决了我的问题
仅供参考 jquery 上传被 19-02-2020 Chrome 浏览器更新 83.0.4103.61 破坏了。 https://bugs.chromium.org/p/chromium/issues/detail?id=1084874 已在 03-06-2020 (83.0.4103.97) 版本中修复...呸。