我正在尝试创建一个java REST服务,它将下载word文档。文件下载但内容只是垃圾十六进制,而不是实际的Word文档内容。我的示例代码如下。我错过了什么?文件之后的&具有相同数量的字节。REST服务发送损坏的文件
@SuppressWarnings("resource")
@RequestMapping(value = "get/testdoc", method=RequestMethod.GET, produces="application/octet-stream)
public @ResponseBody ResponseEntity<byte[]> getTestDoc() throws Throwable{
File doc = new File("C:\\temp\\file.doc");
InputStream is = new FileInputStream(doc);
byte[] bytes = IOUtils.toByteArray(is);
HttpHeaders responseHeaders = new HttpHeaders();
responseHeaders.setContentType(MediaType.APPLICATION_OCTET_STREAM);
responseHeaders.set("Content-Disposition" , "Attachment; filename=file.doc");
responseHeaders.setContentLength(ProposalDoc.length());
return new ResponseEntity<byte[]>(bytes, responseHeaders, HttpStatus.OK);
}
你怎么确定下载的文件是“垃圾十六进制”?你有没有试图用Word打开它?此外,指定您使用的是哪个版本的Spring会很有帮助。 – Pyranja
如果不指定八位位组流和内容长度,该怎么办? –
我用word打开了文件。使用Spring 3.1.1。这需要在下载之前进行Base64编码吗? –