def download = {
println params.id==null?"文件不存在":params.id
def documentInstance = Document.get(params.id)
def filename = documentInstance.documname
println filename
String temp=filename;
if (request.getHeader("User-Agent").toLowerCase().indexOf("firefox") > 0){
filename = new String(filename.getBytes("UTF-8"), "ISO8859-1");//firefox浏览器
}else if(request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0){
filename = URLEncoder.encode(filename, "UTF-8");//IE浏览器
}
response.reset();//如果有换行,对于文本文件没有什么问题,但是对于其它格
//式,比如AutoCAD、Word、Excel等文件下载下来的文件中就会多出一些换行符//0x0d和0x0a,这样可能导致某些格式的文件无法打开,有些也可以正常打开。同//时response.reset()这种方式也能清空缓冲区, 防止页面中的空行等输出到下载内容里去
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename=\"" + filename + "\"");
response.setHeader("Connection", "close");
def webRootDir = servletContext.getRealPath("/")
def saveName=documentInstance.savename
def filepath = new File(webRootDir, "/upload/${saveName}")
println filepath
def out = response.outputStream
def inputStream = new FileInputStream(filepath)
byte[] buffer = new byte[1024*1024]
int i = -1
while ((i = inputStream.read(buffer)) != -1) {
out.write(buffer, 0, i)
}
out.flush()
out.close()
inputStream.close()
}
println params.id==null?"文件不存在":params.id
def documentInstance = Document.get(params.id)
def filename = documentInstance.documname
println filename
String temp=filename;
if (request.getHeader("User-Agent").toLowerCase().indexOf("firefox") > 0){
filename = new String(filename.getBytes("UTF-8"), "ISO8859-1");//firefox浏览器
}else if(request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0){
filename = URLEncoder.encode(filename, "UTF-8");//IE浏览器
}
response.reset();//如果有换行,对于文本文件没有什么问题,但是对于其它格
//式,比如AutoCAD、Word、Excel等文件下载下来的文件中就会多出一些换行符//0x0d和0x0a,这样可能导致某些格式的文件无法打开,有些也可以正常打开。同//时response.reset()这种方式也能清空缓冲区, 防止页面中的空行等输出到下载内容里去
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename=\"" + filename + "\"");
response.setHeader("Connection", "close");
def webRootDir = servletContext.getRealPath("/")
def saveName=documentInstance.savename
def filepath = new File(webRootDir, "/upload/${saveName}")
println filepath
def out = response.outputStream
def inputStream = new FileInputStream(filepath)
byte[] buffer = new byte[1024*1024]
int i = -1
while ((i = inputStream.read(buffer)) != -1) {
out.write(buffer, 0, i)
}
out.flush()
out.close()
inputStream.close()
}