J'ai le code de service REST ci-dessous qui renvoie un fichier. Le problème est maintenant dans le corps de la réponse sur le client PostMan. Je reçois une réponse brute. Comment puis-je la convertir afin qu'elle affiche le contenu du fichier Pour le client, l’objectif est de renvoyer un fichier à l’utilisateur. Le nom du fichier est "Fichier1.jpeg"
Code:
@RequestMapping(value = URIConstansts.GET_FILE, produces = { "application/json" }, method = RequestMethod.GET)
public @ResponseBody ResponseEntity getFile(@RequestParam(value="fileName", required=false) String fileName,HttpServletRequest request) throws IOException{
ResponseEntity respEntity = null;
byte[] reportBytes = null;
File result=new File("/home/arpit/Documents/PCAP/dummyPath/"+fileName);
if(result.exists()){
InputStream inputStream = new FileInputStream("/home/arpit/Documents/PCAP/dummyPath/"+fileName);
byte[]out=org.Apache.commons.io.IOUtils.toByteArray(inputStream);
HttpHeaders responseHeaders = new HttpHeaders();
responseHeaders.add("content-disposition", "attachment; filename=" + fileName);
respEntity = new ResponseEntity(out, responseHeaders,HttpStatus.OK);
}else{
respEntity = new ResponseEntity ("File Not Found", HttpStatus.OK);
}
return respEntity;
}
Le code ci-dessous a résolu mon problème:
@RequestMapping(value = URIConstansts.GET_FILE, produces = { "application/json" }, method = RequestMethod.GET)
public @ResponseBody ResponseEntity getFile(@RequestParam(value="fileName", required=false) String fileName,HttpServletRequest request) throws IOException{
ResponseEntity respEntity = null;
byte[] reportBytes = null;
File result=new File("/home/arpit/Documents/PCAP/dummyPath/"+fileName);
if(result.exists()){
InputStream inputStream = new FileInputStream("/home/arpit/Documents/PCAP/dummyPath/"+fileName);
String type=result.toURL().openConnection().guessContentTypeFromName(fileName);
byte[]out=org.Apache.commons.io.IOUtils.toByteArray(inputStream);
HttpHeaders responseHeaders = new HttpHeaders();
responseHeaders.add("content-disposition", "attachment; filename=" + fileName);
responseHeaders.add("Content-Type",type);
respEntity = new ResponseEntity(out, responseHeaders,HttpStatus.OK);
}else{
respEntity = new ResponseEntity ("File Not Found", HttpStatus.OK);
}
return respEntity;
}
Vous devez utiliser un type de contenu différent au lieu de produire = {application/json "}
Types de contenu
http://silk.nih.gov/public/[email protected]
Si cela ne fonctionne toujours pas, essayez d'obtenir HttpServletResponse et écrivez vos données de fichier dans Stream avec.
Note :: Récemment, j'ai utilisé response.getOutputStream pour écrire un fichier Excel. Pour certaines raisons, le réglage produit ne fonctionnait pas pour moi.
Vous pouvez également utiliser Firebug dans Firefox pour afficher les en-têtes de réponse.