$.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) 版本中修复...呸。