$ .AjaxFileUpload не работает в последней версии Chrome версии 83.0.4103.61 (официальная сборка) (64-разрядная версия) - PullRequest
5 голосов
/ 26 мая 2020

Из последней версии Chrome Версия 83.0.4103.61 (Официальная сборка) (64-разрядная) Jquery $ .AjaxFileUpload не работает. Пожалуйста, помогите мне, если у кого-нибудь есть идея. Этот вызов AJAX работает нормально в более старой версии chrome и других браузерах, таких как firefox et c .. Проблема только с последней версией 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);
}

Ответы [ 3 ]

4 голосов
/ 26 мая 2020

Существует еще один плагин jQuery, который полагался на создание iframe с src="javascript:false", и похоже, что chrome 83 он больше не нравится (https://github.com/jquery-form/form/issues/571). Похоже (согласно размещенному там jsFiddle) chrome 83 блокирует вызов при использовании этого значения атрибута sr c (я сам проверил это с помощью Chrome 83.0.4103.61-1), но не блокирует его, если sr c значение атрибута about:blank.

Согласно источнику для плагина, который вы используете, он создает iframe с вышеупомянутым значением атрибута sr c (https://github.com/davgothic/AjaxFileUpload/blob/master/jquery.ajaxfileupload.js#L99), и, следовательно, проблема. Изменение этой строки должно решить проблему:

.append('<iframe src="about:blank" name="' + id + '" id="' + id + '" style="display: none;"></iframe>');

Хотя плагин не сильно изменился за последние несколько лет (последняя фиксация была около 2 лет go), вы можете сделать Pull Запрос с этим изменением.

2 голосов
/ 04 июня 2020

FYI jquery загрузка была прервана 19-02-2020 Chrome обновлением браузера 83.0.4103.61. https://bugs.chromium.org/p/chromium/issues/detail?id=1084874 Исправлено в выпуске от 06.03.2020 (83.0.4103.97) ... уф.

0 голосов
/ 26 мая 2020

Changed src=

Изменено src = "about: blank" на src = "javascript: false;" в jquery .ajaxfileupload. js, решил мою проблему

...