Загрузка файла PDF не работает при развертывании на сервере.Но работает локально - PullRequest
0 голосов
/ 27 сентября 2019

Я загружаю файл PDF, конвертируя отпечаток яшмы и пишу в ответ.Локально, когда я бегу, он работает как ожидалось.Но при развертывании на сервере размер ответа равен нулю.

вот мой угловой код:

 let queryParameters = new HttpParams();
    queryParameters = queryParameters.set('deliveryID', deliveryNoteId);

    const headers = new Headers( this.defaultHeaders );
    headers.set( 'Content-Type', 'application/json' );
    headers.set( 'Accept', 'application/json' );

    this.url = '/v1/salesPanel/deliveryPDF';

    const path = this.basePath + this.url;

    const requestOptions: any = {
           params: queryParameters,
           headers : headers,
          responseType  : 'blob' as 'json'
         };

    return this.httpnew.get(path, requestOptions);

Загрузка ответа в файл ts:

  this.salesAndPaymentsService.downloadDeliveryNote( this.firm,deliveryId ).subscribe( res => {
console.log( 'start download:', res );
const binaryData = [];
binaryData.push( res );
const url = window.URL.createObjectURL( new Blob( binaryData, { type: 'application/pdf' } ) );
const a = document.createElement( 'a' );
document.body.appendChild( a );
a.setAttribute( 'style', 'display: none' );
a.href = url;
a.download = 'DeliveryNote_' + deliveryId + '.pdf' ;
a.click();
window.URL.revokeObjectURL( url );
a.remove(); // remove the element

Контроллер:

    @RequestMapping(value = "v1/salesPanel/deliveryPDF", method = RequestMethod.GET)
public void downloadGpsLogsAsCSV(@RequestParam("deliveryID") Integer deliveryID, HttpServletRequest request, HttpServletResponse response) {

    try {

        salesPanelBP.downloadPdf(deliveryID, request, response);

    } catch(Exception e) {
       e.printStackTrace();
    }
}

BP:

    public void downloadPdf(Integer deliveryID, HttpServletRequest request, HttpServletResponse response) {

GenerateReport  report=new GenerateReport(salesPanelDAO)    ;
File file;
    try {
JasperPrint Jasper=report.getPDF("DeliveryNote",null,deliveryID);
FileOutputStream fos = new FileOutputStream(testCertPdf);
JasperExportManager.exportReportToPdfStream(jasperPrint, fos);
fos.close();


        response.setContentType("application/pdf");
        response.setHeader("Content-Disposition", "attachment; 
          filename=\"uploadedFile.pdf\"");
        @SuppressWarnings("resource")
        InputStream is = new FileInputStream(file);

        int read = 0;
        byte[] bytes = new byte[1024];
        OutputStream os = response.getOutputStream();

        while ((read = is.read(bytes)) != -1) {
            os.write(bytes, 0, read);
        }
        os.flush();
        os.close();
    }catch (Exception e) {
        e.printStackTrace();
         System.out.println(e.getMessage());    
    }
}

Вот ответ, который я получаю при загрузке файла с сервера enter image description here

Iотключил блокировку всплывающих окон в chrome и пробовал.

Пожалуйста, кто-нибудь может помочь?Заранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...