<a onclick="downloadFile(filePath)" href="#">(下载)</a>
<iframe name="hidden_frame" id="hidden_frame" style="display:none"></iframe>
function downloadFile(filePath){
var fileName=encodeURI(filePath);
document.getElementById("hidden_frame").src = "JS/StreetMap/downloadFile.jsp?fileName="+fileName;
}
public void downloadFile() {
HttpServletResponse response = ServletActionContext.getResponse();
HttpServletRequest request = getRequest();
response.setCharacterEncoding("GBK");
String fileUrl=request.getParameter("fileUrl");
String fileName=request.getParameter("fileName");
String cmsAttachRealFile = "";
try {
fileUrl = new String(fileUrl.getBytes("ISO8859-1"),"GBK");
cmsAttachRealFile = FilePathSptUtil.UPLOAD_ROOT_PATH
//+ FilePathSptUtil.UPLOAD_CMS
+ fileUrl;
fileName = new String(fileName.getBytes("ISO8859-1"),"UTF-8");
fileName = URLEncoder.encode(fileName, "UTF-8");
} catch (Exception e1) {
// TODO 附件流下载 弹出下载框
e1.printStackTrace();
}
try {
OutputStream o = response.getOutputStream();
byte b[] = new byte[500];
File fileLoad = new File(cmsAttachRealFile);
response.setContentType("application/octet-stream");
response.setHeader("content-disposition",
"attachment; filename=\""
+ fileName + "\"");
long fileLength = fileLoad.length();
String length1 = String.valueOf(fileLength);
response.setHeader("Content_Length", length1);
FileInputStream in = new FileInputStream(fileLoad);
int n;
while ((n = in.read(b)) != -1) {
o.write(b, 0, n);
}
in.close();
o.close();
} catch (Exception e) {
// TODO: handle exception
}
}
//jsp
response.setCharacterEncoding("UTF-8");
String fileName=request.getParameter("fileName");
String applicationPath = application.getRealPath("");
String filePath =applicationPath;
String suffixName = fileName.substring(fileName.lastIndexOf(".")+1,fileName.length()).toLowerCase();
String realFilePath = "";
try {
// fileName = new String(fileName.getBytes("ISO-8859-1"),"UTF-8");
realFilePath = filePath+fileName;//附件地址
File fileLoad = new File(realFilePath);
if(!fileLoad.exists()){
System.out.println("没有您要打开的文件");
}else {
// fileName = URLEncoder.encode(fileName, "UTF-8");
String realFileName = fileName.substring(fileName.lastIndexOf("/")+1,fileName.length());
realFileName = URLEncoder.encode(realFileName, "UTF-8");
OutputStream o = response.getOutputStream();
byte b[] = new byte[512];
//contentType设定
String contentType = ZipUtil.getContentType(suffixName);
response.setContentType(contentType);
response.setContentType("application/octet-stream");
//attachment表示网页会出现保存、打开对话框;inline 直接页面打开
response.setHeader("content-disposition","attachment; filename=\"" + realFileName + "\"");
//response.setHeader("content-disposition","inline; filename=\"" + fileName + "\"");
long fileLength = fileLoad.length();
String length1 = String.valueOf(fileLength);
response.setHeader("Content_Length", length1);
FileInputStream in = new FileInputStream(fileLoad);
int n;
while ((n = in.read(b)) != -1) {
o.write(b, 0, n);
}
in.close();
o.close();
}
} catch (Exception e) {
e.printStackTrace();
}
分享到:
相关推荐
数据流方式下载,数据流方式下载,数据流方式下载数据流方式下载数据流方式下载数据流方式下载数据流方式下载
(完整版)Java-Web以流方式下载文件时的HTTP头设置.doc
通过输入流输出流方式的文件上传下载 代码写的可能糙了一点 但是远离还是一眼就能看明白的
客户下载文件时服务器直接把数据库中得到的二进制数据传到客户端
主要介绍了ASP.NET(C#) Web Api通过文件流下载文件的方法,提供源码下载,需要的朋友可以参考下。
Struts2文件流方式导出下载excel、Txt、image图片,直接返回给浏览器提示下载,不生成临时文件,直接保存在客户端
java IO流方式上传下载文件源代码,2个JSP程序都经过测试通过,并在真实项目中使用。
服务器下载文件方式,支持文件流方式下载,WriteFile分片方式下载
使用流下载文件。java response 下载文件方法。
四种C#文件下载方式,WriteFile分块下载,流方式下载,以字符流的形式下载文件,通知浏览器下载文件
在.net IIS禁止浏览器访问文档附件(如doc、xls、rar、pdf)时,在web服务器上通过物理地址以文件流方式下载附件,以保护office文档等不被通过地址栏直接非法下载。 用法:downatt.aspx?file=附件路径(如:...
java 流的方式下载 上传 批量下载zip
用流的方式从本地上传文件到服务器,用流的方式从服务器下载到本地
二进制流的方式到数据库,再以二进制流的方式下载下来!经典语句
最近在做以post请求方式导出excel时,想到了可以使用Blob对象将后台返回的输出流以arraybuffer或blob的格式接收交给Blob处理,最后使用URL生成链接,供浏览器下载excel。 环境 vue2.x webpack3.x axi
NET四种文件下载方式 TransmitFile实现下载 WriteFile实现下载 WriteFile分块下载 字符流方式下载文件
主要介绍了Spring Mvc下实现以文件流方式下载文件的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
第一中使用二进制流的方式,这样被文件的文件可以是随意地址,二不必使用“/”开头的路径;...第二种使用RequestDispatcher下载文件,这中下载方式的局限是被下载文件的路径必须以“/”开头,即在项目的webRoot下
vueCli3.0文件上传后,后端返回流,前端转换成pdf预览的3种方式
asp.net使用流的方式下载附件demo