网上看了很多关于提供图片URL不打开图片,而提示下载的方法,后来自己进行了完善,代码代码非常简单,如下:
@RequestMapping(value = "/downloadAptitude.htm", method = { RequestMethod.GET })
public ModelAndView downloadAptitude(HttpServletRequest request, HttpServletResponse response, ModelMap model) {
String itemId = ParamUtils.getParameter(request, "id");
UserAuth userAuth = UserAuthHelper.getUserAuth(request);
FileDownloadView view =null;
String url,fileName;
if(itemId != null){
url = "http://open.hyey.cn/open.asmx/Action?n=gdhynx&m=GetzjdByid&p=24658d252fadd32d&id=986836";
fileName = "质检报告_"+ itemId +".jpg";
try{
view= new FileDownloadView(createPic(url),fileName);
}catch(Exception e){
e.printStackTrace();
}
}
return new ModelAndView(view);
}
/**
* 获取URL图片流
* @param urlString
* @return
*/
public InputStream createPic(String urlString){
InputStream is = null;
try {
// 构造URL
URL url = new URL(urlString);
// 打开连接
URLConnection con = url.openConnection();
// 输入流
is = con.getInputStream();
} catch (Exception e) {
e.printStackTrace();
}
return is;
}
其原理如下:
- 通过方法InputStream 将图片URL生成图片数据流
- 通过FileDownloadView返回ModelAndView,浏览器会自动提示下载