A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 程madman 中级黑马   /  2017-12-12 23:30  /  834 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

        Ø Servlet3.0的特性
                ○ 3.0于2.5的区别:
                        § 注解开发:方便开发
                        § 文件上传:有些API不全
                        § 异步请求:很少用
        Ø 文件上传:
                ○ 概述:
                        § 将本地的文件写到服务器上
                ○ 文件上传的技术:
                        § Servlet3.0:注解开发/文件上传功能/异步请求
                        § JSPSmartUpload:嵌入到JSP中完成文件上传,主要用于Model1年代
                        § FileUplod:Apache的文件上传组件
                        § Struts2:底层是FileUpload.
                ○ 文件上传的要素:
                        § 表单的提交方式必须是post(get有大小限制)
                        § 表单中需要有文件上传的表单元素:<input type="file">这个元素必须要有name属性和值
                        § 表单的enctype属性的值必须是multipart/form-data.
        Ø 注解开发:
                @webServlet:配置servlet
                @webListener:配置监听器
                @webFilter:配置过滤器
        Ø 文件上传的原理:
                ○ 设置enctype属性的值为mutipart/form-data.后请求体获取到文件格式
                        § 使用request.getHeader("Content-type")获得请求体文件的分割线
                        § 使用request.getInputStream();将输入流转成String;
                        § 使用分割线切分数据:
:设置一个文件上传页面.
【步骤二】:点击提交,提交到Servlet中.
【步骤三】:在Servlet中接收参数.
【步骤四】:获得服务器的文件上传的路径.
【步骤五】:通过流写到该路径下就OK了.\

private static final long serialVersionUID = 1L;
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 接收普通数据:
        request.setCharacterEncoding("UTF-8");
        String filedesc = request.getParameter("filedesc");
        System.out.println("文件描述"+filedesc);
        // 接收文件:
        Part part = request.getPart("upload");
        long size = part.getSize();// 获得文件大小:
        System.out.println("文件大小:"+size);
        String name = part.getName();
        System.out.println("文件表单中的name属性的名称"+name);
        // 获得文件名:
        String header = part.getHeader("Content-Disposition");
        int idx = header.lastIndexOf("filename=\"");
        String fileName = header.substring(idx+10, header.length()-1);
        System.out.println("文件名:"+fileName);
        // 获得文件内容:
        InputStream is = part.getInputStream();
        // 获得upload的路径:
        String path = this.getServletContext().getRealPath("/upload");
        OutputStream os = new FileOutputStream(path+"/"+fileName);
        byte[] b = new byte[1024];
        int len = 0;
        while((len = is.read(b))!=-1){
        os.write(b, 0, len);
        }
        is.close();
        os.close();
        private static final long serialVersionUID = 1L;
                protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                // 接收普通数据:
                request.setCharacterEncoding("UTF-8");
                String filedesc = request.getParameter("filedesc");
                System.out.println("文件描述"+filedesc);
                // 接收文件:
                Part part = request.getPart("upload");
                long size = part.getSize();// 获得文件大小:
                System.out.println("文件大小:"+size);
                String name = part.getName();
                System.out.println("文件表单中的name属性的名称"+name);
                // 获得文件名:
                String header = part.getHeader("Content-Disposition");
                int idx = header.lastIndexOf("filename=\"");
                String fileName = header.substring(idx+10, header.length()-1);
                System.out.println("文件名:"+fileName);
                // 获得文件内容:
                InputStream is = part.getInputStream();
                // 获得upload的路径:
                String path = this.getServletContext().getRealPath("/upload");
                OutputStream os = new FileOutputStream(path+"/"+fileName);
                byte[] b = new byte[1024];
                int len = 0;
                while((len = is.read(b))!=-1){
                os.write(b, 0, len);
                }
                is.close();
                os.close();
                }

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马