我无法找到从我的服务器下载后mp3文件与以前保存的原始文件不同的原因。
这是我的控制器方法。文件(byte [] content)的内容与此阶段的原始文件相同 - 原始文件与从数据库检索的文件相同(在调试器中检查)。
@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和没有它的情况没有区别。)
答案 0 :(得分:2)
如果您设置produces = "application/octet-stream"
属性(MediaType.APPLICATION_OCTET_STREAM
),它应该有效。否则,你会被Spring的转换器框架所困。
您可能需要查看此处,看起来您的问题非常相似:Spring MVC: How to return image in @ResponseBody?。