J'ai écrit un contrôleur Java qui gère toute demande de téléchargement du serveur. Mes fichiers sont présents dans le serveur mais je reçois un fichier de 0 Ko téléchargé à chaque fois. Le fichier est téléchargé mais la taille est toujours 0 Kb. Aidez-moi, s'il vous plaît. Voici mon code -Téléchargement de fichier Java - La taille du fichier téléchargé est toujours zéro Kb
@RequestMapping(value="/downloadFile/{docId}")
public void getDownloadFile(@PathVariable(value = "docId") Integer docId, HttpServletResponse response) throws Exception {
String userName = getUserName();
try {
DocVault documentsVault = documentsVaultRepository.findDocumentAttachment(docId);
String fileName = documentsVault.getDocumentName();
int customerId = documentsVault.getCustomerId();
Map<Integer, String> customerInfo = cspUtils.getCustomersInfo(userName);
Set<Integer> customerIds = customerInfo.keySet();
for (int custId : customerIds) {
if (custId == customerId) {
String path = env.getProperty("doc.rootfolder") + File.separator + documentsVault.getFileName();
service.downloadFile(fileName, path, response);
} else {
logger.info("Customer not linked to user");
}
}
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
}
Mise en œuvre -
public void downloadFile(String fileName, String path, HttpServletResponse response) {
try {
File downloadFile = new File(path);
FileInputStream inputStream = new FileInputStream(downloadFile);
response.setContentLength((int) downloadFile.length());
response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
// get output stream of the response
OutputStream outStream = response.getOutputStream();
byte[] buffer = new byte[BUFFER_SIZE];
int bytesRead = -1;
// write bytes read from the input stream into the output stream
while ((bytesRead = inputStream.read(buffer)) != -1) {
outStream.write(buffer, 0, bytesRead);
}
inputStream.close();
outStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
Je ne reçois aucune exception. S'il vous plaît aider. Merci d'avance.
Merci pour l'entrée. Maintenant, la taille est correcte. Mais le type de fichier est simplement téléchargé en tant que 'fichier' au lieu de .txt, .pdf, .doc, etc. Pouvez-vous aider? Auparavant aussi ce problème était là. –
alors - peut-être vérifier (via la console de développement ou le fiddler) quel en-tête 'Content-Disposition' est retourné. Je vois que vous l'avez réglé correctement, mais vous devriez vérifier quelle est la vraie valeur retournée au navigateur. – gusto2
@HarshitGupta L'activité "Enregistrer sous" dépend entièrement de ce que vous envoyez en tant que "Content-disposition". – EJP