标签:for numbers servlet pat puts rate name false print
@RequestHeader String referer // 这个就是获取头部信息由这个来获取自己的头部信息
如果这个头部信息含有自己的域名则说明这个资源是自己的网站中的,否则则不让他进行下载
/**
* 文件下载防止文件被别的网站引用
* 直接访问会访问不了
* @Description:
* @param type
* 文件后缀名
* @param fileName
* 文件名
* @param request
* @param response
* @param referer
* 转发头部里面只有包含您的域名才给资源
* @return
*/
// @RequestMapping(value="/downloadBySelf/{fileName}/{type}",method=RequestMethod.GET)
@RequestMapping(value = "/downloadBySelf/{fileName}/{type}", method = RequestMethod.GET)
public String downloadFileByself(@PathVariable("type") String type,
@PathVariable("fileName") String fileName,
HttpServletRequest request, HttpServletResponse response,
@RequestHeader String referer // 这个就是获取头部信息
) {
log.info(referer);
if (referer != null) {//这里可以设置自己的域名
// if(null!=referer&&referer.contains("?"))
if (fileName != null) {
String realPath = request.getServletContext().getRealPath(
"WEB-INF/File/");
File file = new File(realPath, fileName + "." + type);
if (file.exists()) {
response.setContentType("application/force-download");// 设置强制下载不打开
response.addHeader("Content-Disposition",
"attachment;fileName=" + fileName + "." + type);// 设置文件名
byte[] buffer = new byte[1024];
FileInputStream fis = null;
BufferedInputStream bis = null;
try {
fis = new FileInputStream(file);
bis = new BufferedInputStream(fis);
OutputStream os = response.getOutputStream();
int i = bis.read(buffer);
while (i != -1) {
os.write(buffer, 0, i);
i = bis.read(buffer);
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
} finally {
if (bis != null) {
try {
bis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (fis != null) {
try {
fis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
}
return null;
}标签:for numbers servlet pat puts rate name false print
原文地址:http://www.cnblogs.com/anstoner/p/7474417.html