从服务器下载的文件与之前保存的原始文件不同
Downloaded file from server is different than original one saved previously
我无法找出为什么从我的服务器下载后的 mp3 文件与之前保存的原始文件不同。
这是我的控制器方法。文件的内容(byte[] 内容)在此阶段与原始文件相同——原始文件与从数据库中检索的文件相同(在调试器中检查)。
@ResponseBody
@RequestMapping(method = RequestMethod.GET, value = "/{sampleId}/file")
public HttpEntity<byte[]> getFile(@PathVariable Long sampleId) {
ResourceEntity resourceEntity = testSampleRepository.getFile(sampleId);
byte[] content = resourceEntity.getContent();
String fileName = resourceEntity.getFileName();
HttpHeaders header = new HttpHeaders();
header.setContentType(new MediaType("audio", "mpeg"));
header.set(HttpHeaders.CONTENT_DISPOSITION,
"attachment; filename=" + fileName.replace(" ", "_"));
header.setContentLength(content.length);
return new HttpEntity<byte[]>(content, header);
}
这是文件的不同之处(左边是原始文件):
为什么使用 HTTP 传递会扭曲我的文件? mediaTypes 是否应该强制执行某些编码? (有 "audio/mpeg" mediaType 和没有它没有区别)。
如果您设置 produces = "application/octet-stream"
属性 (MediaType.APPLICATION_OCTET_STREAM
),它应该可以工作。否则,您将被 Spring 的转换器框架所困。
你可能想看看这里,看来你的问题很相似:Spring MVC: How to return image in @ResponseBody? .
我无法找出为什么从我的服务器下载后的 mp3 文件与之前保存的原始文件不同。
这是我的控制器方法。文件的内容(byte[] 内容)在此阶段与原始文件相同——原始文件与从数据库中检索的文件相同(在调试器中检查)。
@ResponseBody
@RequestMapping(method = RequestMethod.GET, value = "/{sampleId}/file")
public HttpEntity<byte[]> getFile(@PathVariable Long sampleId) {
ResourceEntity resourceEntity = testSampleRepository.getFile(sampleId);
byte[] content = resourceEntity.getContent();
String fileName = resourceEntity.getFileName();
HttpHeaders header = new HttpHeaders();
header.setContentType(new MediaType("audio", "mpeg"));
header.set(HttpHeaders.CONTENT_DISPOSITION,
"attachment; filename=" + fileName.replace(" ", "_"));
header.setContentLength(content.length);
return new HttpEntity<byte[]>(content, header);
}
这是文件的不同之处(左边是原始文件):
为什么使用 HTTP 传递会扭曲我的文件? mediaTypes 是否应该强制执行某些编码? (有 "audio/mpeg" mediaType 和没有它没有区别)。
如果您设置 produces = "application/octet-stream"
属性 (MediaType.APPLICATION_OCTET_STREAM
),它应该可以工作。否则,您将被 Spring 的转换器框架所困。
你可能想看看这里,看来你的问题很相似:Spring MVC: How to return image in @ResponseBody? .