De la última versión de Chrome, versión 83.0.4103.61 (compilación oficial) (64 bits), Jquery $.AjaxFileUpload no funciona. Si alguien tiene una idea, ayúdenme. Firefox, etc. Solo problema con la última versión de Chrome. Aquí está el código:
El código JSP es como
<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); } });Código 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); }FYI jquery upload fue interrumpido por la actualización del navegador Chrome 83.0.4103.61 del 19-02-2020. https://bugs.chromium.org/p/chromium/issues/detail?id=1084874 Solucionado en la versión del 06-03-2020 (83.0.4103.97)... uf.
Hay otro complemento de jQuery que se basó en la creación de un iframe con src="javascript:false" y parece que a Chrome 83 ya no le gusta ( https://github.com/jquery-form/form/issues/571 ) . Parece que (según el jsFiddle publicado allí) Chrome 83 bloquea la llamada cuando usa ese valor de atributo src (lo he verificado yo mismo con Chrome 83.0.4103.61-1 ) pero no lo bloquea si el valor del atributo src es about:blank
Según la fuente del complemento que está utilizando, crea un iframe con el valor del atributo src mencionado anteriormente ( https://github.com/davgothic/AjaxFileUpload/blob/master/jquery.ajaxfileupload.js#L99 ) y, por lo tanto, el asunto. Cambiar esa línea a esto debería resolver el problema:
.append('<iframe src="about:blank" name="' + id + '" id="' + id + '" style="display: none;"></iframe>');Aunque el complemento no ha cambiado mucho en los últimos años (el último compromiso fue hace aproximadamente 2 años), puede hacer una solicitud de extracción con este cambio.
Se cambió src="about:blank" a src="javascript:false;" en jquery.ajaxfileupload.js, resolvió mi problema