$.AjaxFileUpload 在最新版本的 Chrome 版本 83.0.4103.61(官方版本)(64 位)中不起作用

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)

Ait*_*ron 4

还有另一个 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 请求。