从服务器上下载文件
根据绝对路径下载文件
/**
** 文件下载
*@author jiejing
*
* /
*/
@ResponseBody
@RequestMapping("/dadown")
public void dadown(Integer did,String loginname,HttpServletResponse response,HttpServletRequest request){
Qdatum dadown = datumServiceImpl.dadown(loginname,did);
String durl = dadown.getDurl();//得到文件存储路径
String dtitle = dadown.getDtitle();文件文件名称
DataDown d = new DataDown();
try {
d.downauthimg(durl, dtitle,null,null);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
下载工具类方法:
public HttpServletResponse download(String path,String dtitle, HttpServletResponse response,HttpServletRequest request) {
try {
// path是指欲下载的文件的路径。
File file = new File(path);
// 取得文件名。
String filename = dtitle;
//filename = new String(filename.getBytes(), "ISO-8859-1");
// filename = URLEncoder.encode(filename, "UTF-8");
// response.setHeader("Content-Disposition","attachment;filename="+filename);
// 取得文件的后缀名。
String ext = filename.substring(filename.lastIndexOf(".") + 1).toUpperCase();
// 以流的形式下载文件。
InputStream fis = new BufferedInputStream(new FileInputStream(path));
byte[] buffer = new byte[fis.available()];
fis.read(buffer);
fis.close();
// 清空response
response.reset();
// 设置response的Header
//解决获得中文参数的乱码问题----
//filename = new String(filename.getBytes("ISO8859-1"),"UTF-8");//美女.jpg
// response.addHeader("Content-Disposition", "attachment;filename=" + filename);
response.addHeader("Content-Disposition", "attachment;filename="
+ new String(filename.getBytes("utf-8"), "ISO-8859-1"));
response.addHeader("Content-Length", "" + file.length());
OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
response.setContentType("application/octet-stream");
toClient.write(buffer);
toClient.flush();
toClient.close();
} catch (IOException ex) {
ex.printStackTrace();
}
return response;
}