/**
* 下载接口
*/
@RequestMapping(value = "/download")
@ResponseBody
public ResponseEntity<byte[]> download()throws Exception{
String fileUrl = "http://192.168.37.163/img/20191113/f222ce6d6f0879bcf91ffc7c85b2c5bc.jpg";
String fileName = "孙艺珍.jpg";
HttpHeaders headers = new HttpHeaders();
//指定文件名
headers.setContentDispositionFormData("attachment", new String(fileName.getBytes("UTF-8"),"ISO-8859-1"));
//指定以流的形式下载文件
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
//图片url转二进制数组
byte[] bytes = getInputStreamByUrl(fileUrl);
return new ResponseEntity<>(bytes, headers, HttpStatus.OK);
}
/**
* 图片url转二进制数组
* @param fileUrl
* @return
*/
public static byte[] getInputStreamByUrl(String fileUrl) {
try {
//获取输入流
URL url = new URL(fileUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(1000);
InputStream inStream = conn.getInputStream();
//输入流转换为输出流,再转换为二进制数组
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
while ((len = inStream.read(buffer)) != -1) {
outStream.write(buffer, 0, len);
}
inStream.close();
return outStream.toByteArray();
} catch (Exception e) {
throw new RuntimeException("图片链接转二进制数组失败");
}
}