0
這是發送文件的代碼:所接收的文件是較大的,然後發送的文件
byte[] data = FileUtils.readFileToByteArray(new File("my_file.docx"));
System.out.println(data.length); // prints 6408
ResponseEntity<byte[]> responseEntity = makeResponse(data, HttpStatus.OK, DOCX);
return responseEntity;
private <T> ResponseEntity<T> makeResponse(T responseParameter, HttpStatus httpStatus,
DocumentFormat documentFormat) {
HttpHeaders headers = new HttpHeaders();
String filename;
switch (documentFormat) {
case PDF:
headers.setContentType(MediaType.parseMediaType("application/pdf"));
filename = "output.pdf";
break;
case DOCX:
headers.setContentType(MediaType.parseMediaType("application/docx"));
filename = "output.docx";
break;
default:
throw new IllegalArgumentException(documentFormat.name() + "is not supported");
}
headers.setContentDispositionFormData(filename, filename);
return new ResponseEntity<>(responseParameter, headers, httpStatus);
}
所接收的文件是大小8546個字節。發送的文件大小爲6408字節。即使編碼在某種程度上是錯誤的,收到的文件應該是相同的大小,對吧?收到的文件的內部看起來像一些隨機字符的兩頁,「UEsDBBQACAgIANqVt0YAAAAAAAAAAAAA」< - 類似的東西。
我試圖在發送響應之前將my_file.docx中讀取的字節數組寫入本地磁盤上的文件,並且工作正常。
我也嘗試過我發送的頭文件的setContentLength,但它會得到相同的結果 - 接收文件的內容錯誤,即使大小正確。
任何想法,其中2Kb是從哪裏來的?我該如何解決這個錯誤?