Web端文件下载源码

Web文件下载

一、下载案例需求

1.页面显示超链接
2.点击超链接后弹出下载提示框
3.完成图片文件下载

二、案例分析

1.超链接指向的资源如果能被浏览器解析,则在浏览器中展示,如果不能解析,则弹出下载提示框。不满足需求。
2.任何资源都必须弹出下载框。
3.使用响应头设置资源的打开方式: context-disposition:attachment;filename=xxx

三、步骤

1.定义页面,编辑超链接href属性,指向Servlet,传递资源名称filename

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>下载文件</title>
</head>
<body>
    <a href="/day15/servletDownload?filename=1.jpg">图片1</a>
    <a href="/day15/servletDownload?filename=九尾.jpg">图片2</a>
</body>
</html>

2.定义Servlet:

1).获取文件名称。
2).使用字节输入流加载文件进内存。
3).指定response的响应头:content-disposition:attachment;filename=xxx
4).将数据写出到response输出流。

@WebServlet("/servletDownload")
public class ServletDownload extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1.获取请求参数,文件名称
        String filename = request.getParameter("filename");
        //2.使用字节输入流加载文件进内存
        //2.1 找到文件服务器路径
        ServletContext servletContext = this.getServletContext();
        String realPath = servletContext.getRealPath("/img/" + filename);
        System.out.println(realPath);
        //2.2 用字节流关联
        FileInputStream fis = new FileInputStream(realPath);
        //3.设置response的响应头
        //3.1 设置响应头类型;context-type
        String mimeType = servletContext.getMimeType(filename);
        response.setHeader("content-type",mimeType);
        //3.2 设置相应头打开方式:context-disposition

        //3.解决中文文件名问题
        //1.获取user-agent请求头
        String agent = request.getHeader("user-agent");
        //2.使用工具类方法编码文件名即可
        filename = DownLoadUtils.getFileName(agent, filename);
        response.setHeader("content-disposition","attachment;filename="+filename);
        //4.将输入流的数据写到输出流中
        ServletOutputStream sos = response.getOutputStream();
        byte[] buff = new byte[1024 * 8];
        int len = 0;
        while((len = fis.read(buff))!=-1){
            sos.write(buff,0,len);
        }
        fis.close();
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}
public class DownLoadUtils {

    public static String getFileName(String agent, String filename) throws UnsupportedEncodingException {
        if (agent.contains("MSIE")) {
            // IE浏览器
            filename = URLEncoder.encode(filename, "utf-8");
            filename = filename.replace("+", " ");
        } else if (agent.contains("Firefox")) {
            // 火狐浏览器
            BASE64Encoder base64Encoder = new BASE64Encoder();
            filename = "=?utf-8?B?" + base64Encoder.encode(filename.getBytes("utf-8")) + "?=";
        } else {
            // 其它浏览器
            filename = URLEncoder.encode(filename, "utf-8");
        }
        return filename;
    }
}

四、问题总结

中文乱码问题的解决思路

 1.获取客户端使用的浏览器版本信息
 2.根据不同的版本信息,设置filename的编码方式不同==
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于手机彩票源码下载,PHP是一种常用的服务器编程语言,为开发者提供了丰富的功能和工具来实现这个目标。 首先,要下载PHP手机彩票源码,可以通过互联网搜索或者在一些技术社区或开发者论坛上查找。有很多网站提供免费或付费的源码下载服务,可以提供手机彩票系统的源码和相关文档。用户可以根据自己的需求选择适合的源码下载源码后,需要将其保存到本地计算机上。通常,源码的文件结构包括多个文件和文件夹,其中包含了实现彩票系统所需的脚本、样式表、图片等资源。将源码文件按照推荐的目录结构存放在本地目录中。 接下来,我们需要设置一个适当的开发环境来运行PHP代码。通常,我们需要在计算机上安装一个Web服务器软件(例如Apache或Nginx)和PHP解析器,以便运行PHP程序。也可以使用一些集成开发环境(例如XAMPP或WAMP)来快速搭建PHP开发环境。 一旦开发环境搭建完成,我们可以将源码文件复制到Web服务器的根目录下或者指定的虚拟主机目录中。然后,在手机浏览器中输入相应的URL地址即可访问彩票系统。 在启动系统之前,我们需要对源码进行一些配置。这可能包括数据库连接设置、读取配置文件、设置管理员账号等。具体的配置过程可以根据源码提供的说明文档进行。 最后,我们可以在手机通过访问相应的URL地址来使用彩票系统。在手机浏览器中输入系统的URL地址后,就可以进行彩票购买、查看开奖结果等操作。根据源码提供的功能和界面设计,用户可以在手机上方便地参与彩票游戏。 综上所述,下载PHP手机彩票源码需要找到适合的源码下载网站,保存源码文件并搭建开发环境。然后进行相关的配置和部署,就可以在手机访问并使用彩票系统。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值