Я загружаю файл 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());
}
}
Вот ответ, который я получаю при загрузке файла с сервера
Iотключил блокировку всплывающих окон в chrome и пробовал.
Пожалуйста, кто-нибудь может помочь?Заранее спасибо