下载
来源:互联网 发布:姚劲波的域名 编辑:程序博客网 时间:2024/04/30 05:53
把一个文件转换成字节数组,使用response.getOutputStream()传递给浏览器
2个响应头
Content-Type:文件的MIME类型
-调用ServletContext的getMimeType(文件名称),得到MIME类型
Content-Disposition:默认为inline(在浏览器中打开)attachment;filename=xxx
-在filename=后面跟随的显示在下载框中的文件名称
1个响应体(下载流)
=================
注意
====
显示在下载框中的文件名如果为中文,会出现乱码
浏览器使用的编码
*FirFox:Base64编码
*其他:URL编码
2个响应头
Content-Type:文件的MIME类型
-调用ServletContext的getMimeType(文件名称),得到MIME类型
Content-Disposition:默认为inline(在浏览器中打开)attachment;filename=xxx
-在filename=后面跟随的显示在下载框中的文件名称
1个响应体(下载流)
=================
注意
====
显示在下载框中的文件名如果为中文,会出现乱码
浏览器使用的编码
*FirFox:Base64编码
*其他:URL编码
解决方案:
package com.web.servlet;import java.io.FileInputStream;import java.io.IOException;import java.io.PrintWriter;import java.net.URLEncoder;import javax.servlet.ServletException;import javax.servlet.ServletOutputStream;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.io.IOUtils;import sun.misc.BASE64Encoder;public class DonwloadServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {String filename = "D:/CloudMusic/岸部眞明 - 流れ行く云.mp3"; //解决显示乱码问题String framename = filenameEncoding("岸部眞明 - 流れ行く云.mp3", request);//获取文件MIME类型String contentType = this.getServletContext().getMimeType(filename);String contentDisposition = "attacment;filename="+framename;//输入流FileInputStream input= new FileInputStream(filename);//设置头response.setHeader("Content-Type", contentType);response.setHeader("Content-Disposition", contentDisposition);//绑定流ServletOutputStream output = response.getOutputStream();IOUtils.copy(input, output);}public static String filenameEncoding(String filename,HttpServletRequest request) throws IOException {String agent = request.getHeader("User-Agent"); // 获取浏览器if (agent.contains("Firefox")) {BASE64Encoder base64Encoder = new BASE64Encoder();filename = "=?utf-8?B?"+ base64Encoder.encode(filename.getBytes("utf-8")) + "?=";} else if (agent.contains("MSIE")) {filename = URLEncoder.encode(filename, "utf-8");} else {filename = URLEncoder.encode(filename, "utf-8");}return filename;}}
0 0
- 下载
- 下载
- 下载
- 下载
- 下载???
- 下载
- 下载
- 下载
- 下载
- 下载
- 下载
- 下载
- 下载
- 下载
- 下载
- 下载
- 下载
- 下载
- [BZOJ3110][Zjoi2013]K大数查询(主席树套线段树||整体二分 )
- LoadRunner中Java Vuser协议脚本开发
- 网络通讯经常出现的问题
- 认识神经网络
- Web前端初步——布局0
- 下载
- 最简单实现跨域的方法:使用nginx反向代理
- Linux 安装VMwareTools ,root登陆,权限问题
- 如何解决在GDI画图中,多次修改画笔的颜色
- Linux某个用户无法登录系统
- ajax请求springmvc与mvc:annotation-driven
- window安装python,ipython,pycharm
- Mysql (三) - 视图、字符集、校对集、触发器
- Django 错误 code 400, message Bad request syntax