文件的上传下载

文件上传

JSP

1.input的type设为file
2.form表单的method设为“post”,get请求会将文件名传给服务端,而不是文件本身;
3.form表单的enctype设置multipart/form-data,以二进制形式传输数据;

servlet

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //通过输入流获取到客户端传来的数据流
        InputStream inputStream = req.getInputStream();
        Reader reader = new InputStreamReader(inputStream);
        BufferedReader bufferedReader = new BufferedReader(reader);
        //通过输出流将数据输出到本地硬盘存起来
        //获取文件夹的绝对路径
        String path = req.getServletContext().getRealPath("/file");
        String str = "";
        OutputStream outputStream= new FileOutputStream("file");
        while (((str = bufferedReader.readLine())!= null)){
            System.out.println(str);
        }
    }

文件下载

tips:Build->Rebuild Project可以重新构建项目。

JSP

<!-- 点击下载不同的文件 -->
<body>
    <a href="/download?type=jpg">picture</a>
    <a href="/download?type=test">test.txt</a>
</body>

servlet

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String type = req.getParameter("type");
        String fileName = "";
        //判断下载哪个文件
        switch (type){
            case "jpg":
                fileName="1.jpg";
                break;
            case "test":
                fileName="test.txt";
        }
        //设置响应方式
        resp.setContentType("application/x-msdownload");
        //设置下载之后的文件名
        resp.setHeader("Content-Disposition","attachment;filename="+fileName);
        //获取输出流
        OutputStream outputStream = resp.getOutputStream();
        //获取文件绝对路径
        String path = req.getServletContext().getRealPath("file/"+fileName);
        InputStream inputStream = new FileInputStream(path);
        int temp = 0;
        while ((temp=inputStream.read())!=-1) {
            outputStream.write(temp);
        }
        inputStream.close();
        outputStream.close();
    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值