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是从哪里来的?我该如何解决这个错误?