it-swarm.com.de

Datei in Spring MVC zurückgeben REST

Ich habe den REST Service Code, der eine Datei zurückgibt. Jetzt liegt das Problem im Antworttext auf dem PostMan-Client. Ich erhalte eine rohe Antwort. Wie kann ich sie konvertieren, damit der Inhalt der Datei angezeigt wird An den Client gibt Goal eine Datei an den Benutzer zurück. Dateiname ist "File1.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;

}
7
arpit joshi

Der folgende Code hat mein Problem gelöst:

@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;
}
17
arpit joshi

Sie müssen einen anderen Inhaltstyp anstelle von Productions = {application/json "} verwenden.

Inhaltstypen 

http://silk.nih.gov/public/[email protected]

Wenn dies immer noch nicht funktioniert, versuchen Sie, HttpServletResponse abzurufen und Ihre Dateidaten mit Response.setContentType () in Stream zu schreiben.

Anmerkung :: Kürzlich habe ich mit response.getOutputStream eine Excel-Datei geschrieben. Aus einigen Gründen funktionierte die Einstellung nicht für mich.

Sie können auch Firebug in Firefox verwenden, um Response-Header anzuzeigen. 

2
DhruvG