文件上传与下载

文件上传与下载

一、使用smartupload.jar实现文件上传

//1.将jar包添加到项目中:smartupload.jar
//2.准备上传的页面
          <form action="dload" method="post"  enctype="multipart/form-data" >
            书名:<input type="text" name="bookname"> <br>
            图片:<input type="file" name="nice"><br>
            <input type="submit" value="提交">
          </form>
<!--注意提交方式一定是post,form表单中要添加enctype属性-->
//3、服务端servlet
  protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //上传文件
        try {
            //1、创建文件上传对象
            SmartUpload su = new SmartUpload();
            //2、初始化上传操作
            //2.1获得pageContext对象
            JspFactory factory = JspFactory.getDefaultFactory();
            PageContext pageContext = factory.getPageContext(this, req, resp, null, false, 1024, true);
            su.initialize(pageContext);
            //2.2设置编码
            su.setCharset("utf-8");
            //3、实现文件数据的上传
            su.upload();
            //4、获得文件信息
            File file = su.getFiles().getFile(0);
            //4.1得到文件的基本信息
            String fileName = file.getFileName();
            System.out.println(fileName);
            String type = file.getContentType();
            System.out.println("type="+type);
            //5、指定文件上传路径
            String url = "/uploadfiles/"+fileName;
            //将上传文件保存到指定位置
            file.saveAs(url,SmartUpload.SAVE_VIRTUAL);
            //7、跳转到成功页面
            req.setAttribute("filename",fileName); //存一下文件名
            String bookname = su.getRequest().getParameter("bookname");//获取文件以外的表单数据必须用su
            System.out.println("bookname="+bookname);
            req.getRequestDispatcher("successful.jsp").forward(req,resp);
        } catch (SmartUploadException e) {
            e.printStackTrace();
        }
    }
//跳转到的成功界面
   <h1> 上传成功</h1>
<%--展示一下图片--%>
    <img src="uploadfiles/${filename}">
<%--下载图片--%>
<a href="downimg?filename=${filename}"> 下载图片</a>

二、文件的下载

/**
		String name=request.getParameter("filename");
 		String url="uploadfile/"+name;
		 //将响应的内容设置为通用的二进制流
		response.setContentType("application/octet-stream");
		//attachment 告诉浏览器以附件的方式下载文件(弹出下载框)
		name=URLEncoder.encode(name,"utf-8");
		response.addHeader("Content-Disposition","attachment;filename="+name);
		request.getRequestDispatcher(url).forward(request, response);
		//清空缓冲区:将服务端缓冲区的文件内容,立即权并不传送给客户端
		response.flushBuffer(); 
*/
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String filename = req.getParameter("filename");
        String path = "/uploadfiles/"+filename;
        //设置响应头信息和响应类型
        resp.setContentType("application/octet-stream");
        //attachment 告诉浏览器以附件的方式下载文件(弹出下载框)
        filename=URLEncoder.encode(filename,"utf-8"); //乱码问题
        resp.addHeader("Content-Disposition","attachment;filename="+filename );
        //跳转页面
        req.getRequestDispatcher(path).forward(req,resp);
        //清空缓存区
        resp.flushBuffer();
    }

三、注意

1、要提前在web下创建好文件夹,并且文件夹中先随便放一个文件如 a.txt 不然会找不到这个文件夹位置
2、在上传中,此时如果表单中有其他数据时,不能通过request直接获取,需要通过SmartUpload对象获取
		String name=su.getRequest().getParameter("bookName");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码上行动jyn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值