J'ai les fichiers .xlsx, .docx et .pdf enregistrés dans mon backend. Le contrôleur de téléchargement ressemble à ceci:Les fichiers téléchargés via un contrôleur de ressort sont endommagés
@RestController
public class FileDownload {
@RequestMapping(value = "/files/{file_name}/", method = RequestMethod.GET, produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
public void getFile(
@PathVariable("file_name") String file,
HttpServletResponse response) throws Exception {
String fileType=file.split("\\.")[1];
switch(fileType){
case "xlsx": response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
break;
case "docx": response.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document");
break;
case "pdf": response.setContentType("application/pdf");
break;
default: response.setContentType("application/octet-stream");
break;
}
response.setHeader("Content-Disposition", "attachment; filename=" + file);
response.setHeader("Content-Length", String.valueOf(file.length()));
InputStream is = FileDownload.class.getResourceAsStream("/files/" + file);
copy(is, response.getOutputStream());
response.flushBuffer();
}
}
Lorsque vous essayez d'ouvrir le fichier, Excel me dit qu'il est corrompu et doit être réparé. Le processus de réparation échoue aussi.
Ce qui pourrait être à l'origine de cette erreur?
Il y a beaucoup de questions similaires mais aucune des solutions proposées ne semble fonctionner.
La seule "correction" qui fonctionne est d'ajouter un attribut "download" au lien dans le frontend qui télécharge le fichier. Mais malheureusement, cela ne fonctionne pas pour IE.