栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

“文件下载”案例的几个bug

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

“文件下载”案例的几个bug

一、路径获取失败,弹出错误500(解决时间最长的)

定义Servlet,错误代码如下:

@WebServlet("/downloadServlet")
public class DownLoadServlet 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/1.jpg" +filename);
        System.out.println(realPath);

        //2.2 用字节流关联
        FileInputStream fis = new FileInputStream(realPath);

        //3. 设置response的响应头
        //3.1 设置响应头类型:content-type
        String mimeType = servletContext.getMimeType(filename);//获取文件的mime类型
        response.setHeader("content-type", mimeType);
        //3.2 设置响应头打开方式:content-disposition
        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);
    }
}

  错误的地方应该是:

 打开的页面就是

 也就是:路径就获取错误

解决方法:只需要去掉“+filename”即可

 //2.1 找到文件服务器路径
        ServletContext servletContext = this.getServletContext();
        String realPath = servletContext.getRealPath("./img/1.jpg");
        System.out.println(realPath);

【测试】直接打开该页面(/downloadServlet),可弹出下载提示框(没有提示框的可以在下载设置里面进行设置)

注:我加了一个打印路径,可在idea控制台查看路径,在图片路径后还有null字符的就是错误路径

定义页面,代码如下(步骤应该在定义Servlet前)




    
    Title



    图片1
    

图片1

打开html页面后,

 二、 在定义页面中,第一个图片超链接无法打开

 即这个超链接无法打开

 解决方法:(img放在web目录下)

右键img-->Mark Directory as-->Resourses Root

三、关于超链接中相对路径的写法

有些人的写法是:src="默认路径/img/i.jpg"

但是我这么写无法获取路径,只能写src="./img/1.jpg"

(可能还有其他版本的正确路径写法,主要需要自己测试一下,之后按照类似格式即可)

盲猜原因应该是:idea或jdk版本不一样

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/277161.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号