上传/下载——简述

1.上传核心原理

    1.jsp注意点

        (1)form表单请求方式为POST请求

        (2)form的enctype属性值为“multipart/form-data” (含义:设置表单的类型为文件上传表单)

        (3)获取文件通过type属性值file

        (4)上传文件务必设置name属性值

    2.servlet注意点

        (1)通过getPart()方法获取Part对象

Part part = request.getPart("myfile");

        (2)通过getSubmittedFileName()方法获取上传的文件名

String fileName = part.getSubmittedFileName();
​        System.out.println("上传文件名:"+fileName);

        (3)获取上传文件存放的路径

 String filePath = request.getServletContext().getRealPath("/");
​        System.out.println("文件存放的路径:"+filePath);

        (4)将文件上传到指定位置

part.write(filePath+"/"+fileName);

2.上传实战

    2.1 配置tomcat8
    2.2创建工程,并导入tomcat8中的servlet和jsp的jar包
    2.3创建upload.jsp

<form method="post" action="UpServlet" enctype="multipart/form-data">
        姓名:<input  type="text" name="uname"/><br/>
        文件:<input type="file" name="myfile"/><br/>
        <input type="submit" value="提交"/>
    </form>

    2.4创建UpServlet

@MultipartConfig
public class UpServlet extends HttpServlet {
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        String uname = request.getParameter("uname");
        //通过getPart()方法获取Part对象
        Part part = request.getPart("myfile");
        //通过getSubmittedFileName()方法获取上传的文件名
        String fileName = part.getSubmittedFileName();
        System.out.println("上传文件名:"+fileName);
        //获取上传文件存放的路径
        String filePath = request.getServletContext().getRealPath("/");
        System.out.println("文件存放的路径:"+filePath);
        //将文件上传到指定位置
        part.write(filePath+"/"+fileName);
    }
}

    2.5web.xml

<servlet>
        <servlet-name>UpServlet</servlet-name>
        <servlet-class>cn.kgc.servlet.UpServlet</servlet-class>
 </servlet>
 <servlet-mapping>
        <servlet-name>UpServlet</servlet-name>
        <url-pattern>/UpServlet</url-pattern>
 </servlet-mapping>  

    2.6测试上传

3.下载核心原理

3.1jsp注意点

        (1)测试不输入参数的校验
        (2)测试输入错误参数的校验
        (3)测试输入正确参数的校验

3.2servlet注意点


       (1)参数的非空校验,去除字符串的前后空格

if(name==null || "".equals(name.trim())){
    response.getWriter().write("请输入要下载的文件名");
    //关闭流
    response.getWriter().close();
    //退出程序
    return;
}

       (2)获取文件下载路径

String path = getServletContext().getRealPath("/");

       (3)判断文件是否存在并且是一个标准文件

file.exists() && file.isFile()

       (4)下载文件

ServletOutputStream os = response.getOutputStream();

  4.下载实战

        4.1创建download.jsp

<form action="DownServlet" method="post">
        <input type="text" name="fileName" placeholder="请输入要下载的文件名">
        <input type="submit" value="下载">
    </form>

        4.2创建DownServlet

 public class DownServlet extends HttpServlet {
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
 
        String name = request.getParameter("fileName");
        //参数的非空校验,去除字符串的前后空格
        if(name==null || "".equals(name.trim())){
            response.getWriter().write("请输入要下载的文件名");
            //关闭流
            response.getWriter().close();
            //退出程序
            return;
        }
        //获取文件下载路径
        String path = getServletContext().getRealPath("/");
        File file = new File(path+name);
        //判断文件是否存在并且是一个标准文件
        if(file.exists() && file.isFile()){
            //通过response.setContentType()方法设置Content-type头字段的值
            response.setContentType("application/x-msdownload");
            //通过setHeader()方法设置Content-Disposition头的值为attachment;filename=文件名
            response.setHeader("Content-Disposition","attachment;filename="+name);
            FileInputStream is = new FileInputStream(file);
            //通过getOutputStream()向客户端写入附件内容
            ServletOutputStream os = response.getOutputStream();
            byte[] array = new byte[1024];
            int len = 0;
            while((len = is.read(array))!=-1){
                os.write(array,0,len);
            }
        }else{
            response.getWriter().write("文件不存在,请重试!");
            response.getWriter().close();
        }
 
    }
}

        4.3web.xml

<servlet>
        <servlet-name>DownServlet</servlet-name>
        <servlet-class>cn.kgc.servlet.DownServlet</servlet-class>
</servlet>
<servlet-mapping>
        <servlet-name>DownServlet</servlet-name>
        <url-pattern>/DownServlet</url-pattern>
</servlet-mapping>    

        4.4测试下载

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值