2017-01-25 6 views
-1

это мой путь к файлуКак загрузить файл PDF в Spring mvc?

public final static String BOOKINGPDFFILE= "D:/Hotels/pdf/"; 

Это ниже код, что я написал, чтобы скачать PDF из вышеприведенного папки ресурсов

Pdf="column name in database i used for storing in database" 

@RequestMapping(value = "/getpdf/{pdf}", method = RequestMethod.GET) 
public void getPdf(@PathVariable("pdf") String fileName, HttpServletResponse response,HttpServletRequest request) throws IOException { 


    try { 
     File file = new File(FileConstant.BOOKINGPDFFILE + fileName+ ".pdf"); 


     Files.copy(file.toPath(),response.getOutputStream()); 
    } catch (IOException ex) { 
     System.out.println("Contract Not Found"); 
     System.out.println(ex.getMessage()); 
    } 

} 

ответ

1

Вам нужно создать реализацию AbstractPdfView для достижения этой цели .. Вы можете сослаться на эту ссылку https://www.mkyong.com/spring-mvc/spring-mvc-export-data-to-pdf-file-via-abstractpdfview/

+0

хорошо я прохожу через него, что, если я хочу, чтобы открыть файл в браузере он сам в следующей вкладке –

0

Вы можете попробовать что-то вроде этого:

@RequestMapping(method = { RequestMethod.GET }, value = { "/downloadPdf") 
    public ResponseEntity<InputStreamResource> downloadPdf() 
    { 
     try 
     { 
      File file = new File(BOOKINGPDFFILE); 
      HttpHeaders respHeaders = new HttpHeaders(); 
      MediaType mediaType = MediaType.parseMediaType("application/pdf"); 
      respHeaders.setContentType(mediaType); 
      respHeaders.setContentLength(file.length()); 
      respHeaders.setContentDispositionFormData("attachment", file.getName()); 
      InputStreamResource isr = new InputStreamResource(new FileInputStream(file)); 
      return new ResponseEntity<InputStreamResource>(isr, respHeaders, HttpStatus.OK); 
     } 
     catch (Exception e) 
     { 
      String message = "Errore nel download del file "+idForm+".csv; "+e.getMessage(); 
      logger.error(message, e); 
      return new ResponseEntity<InputStreamResource>(HttpStatus.INTERNAL_SERVER_ERROR); 
     } 
    } 

И в вашем веб-страницы, вы можете написать ссылку следующим образом:

<a href="/yourWebAppCtx/yourControllerRoot/downloadPdf" target="_blank"> download PDF </a> 

Angelo

1

Вот так, надеюсь, что это поможет.

@RequestMapping(value = "/getpdf/{pdf}", method = RequestMethod.GET) 
public void getPdf(@PathVariable("pdf") String fileName, HttpServletResponse response) throws IOException { 

    try { 
     File file = new File(FileConstant.BOOKINGPDFFILE + fileName+ ".pdf"); 

     if (file.exists()) { 
      // here I use Commons IO API to copy this file to the response output stream, I don't know which API you use. 
      FileUtils.copyFile(file, response.getOutputStream()); 

      // here we define the content of this file to tell the browser how to handle it 
      response.setContentType("application/pdf"); 
      response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".pdf"); 
      response.flushBuffer(); 
     } else { 
      System.out.println("Contract Not Found"); 
     } 
    } catch (IOException exception) { 
     System.out.println("Contract Not Found"); 
     System.out.println(exception.getMessage()); 
    } 
} 
+0

я также использую Commons IO, но в этой части я получаю ошибки FileUtils.copyFile (файл, ответ. getOutputStream()); –

+0

Если вы можете оставить более подробную информацию об ошибке и конфигурации Spring MVC, я могу вам помочь. –

+0

Ошибка в основном 404 не найдена. Когда я нажимаю кнопку загрузки, она перенаправляется на новую вкладку и отображает «404 не найден». мне нужно добавить эту часть я использую 4.0.1 Spring framework ..itext для создания pdf –