方式1:
public void download(HttpServletResponse response,@RequestParam(value="params") String params) throws IOException, DocumentException{
response.setContentType("application/pdf");
//设置Content-Disposition
response.setHeader("Content-Disposition", "attachment;filename=pdf.pdf");
//读取文件 生成一个字节数组
byte[] a = ;
OutputStream out = response.getOutputStream();
InputStream in = new ByteArrayInputStream(a);
//写文件
int b;
while((b=in.read())!= -1)
{
out.write(b);
}
in.close();
out.close();
}
Type是返回的文件类型,而Content-Disposition则是告诉浏览器,本次返回的是一个附件,文件名是什么。
方式二:spring对上述方法的封装
@RequestMapping(value="/html2pdf",method=RequestMethod.POST)
public ResponseEntity<byte[]> downloadFile(HttpServletResponse response,@RequestParam(value="params") String params) throws IOException, DocumentException{
if(null !=params ){
String html = params;
String filename = "pdf.pdf";
try {
HttpHeaders headers = new HttpHeaders();
//下载显示的文件名,解决中文名称乱码问题
String downloadFielName = new String(filename.getBytes("UTF-8"),"iso-8859-1");
//通知浏览器以attachment(下载方式)打开图片
// headers.setContentDispositionFormData("attachment", downloadFielName);
headers.add("Content-Disposition", "attachment;filename=pdf.pdf");
headers.add("contentType", "application/pdf");
//application/octet-stream : 二进制流数据(最常见的文件下载)。
return new ResponseEntity<byte[]>(HTML2PDF.html2PDF(html),
headers, HttpStatus.CREATED);
} catch (Exception e) {
return null;
}
}
return null;
}