• 简单的上传事例


    第一步:

    完成index.jsp,只需要一个表单。注意表单必须是post的,而且enctype必须是mulitpart/form-data的。

    <form action="${pageContext.request.contextPath }/FileUploadServlet" method="post" enctype="multipart/form-data">
            用户名:<input type="text" name="username"/><br/>
            文件1:<input type="file" name="file1"/><br/>
            <input type="submit" value="提交"/>
        </form>

    第二步:

    完成FileUploadServlet

    public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            // 因为要使用response打印,所以设置其编码
            response.setContentType("text/html;charset=utf-8");
            
            // 创建工厂
            DiskFileItemFactory dfif = new DiskFileItemFactory();
            // 使用工厂创建解析器对象
            ServletFileUpload fileUpload = new ServletFileUpload(dfif);
            try {
                // 使用解析器对象解析request,得到FileItem列表
                List<FileItem> list = fileUpload.parseRequest(request);
                // 遍历所有表单项
                for(FileItem fileItem : list) {
                    // 如果当前表单项为普通表单项
                    if(fileItem.isFormField()) {
                        // 获取当前表单项的字段名称
                        String fieldName = fileItem.getFieldName();
                        // 如果当前表单项的字段名为username
                        if(fieldName.equals("username")) {
                            // 打印当前表单项的内容,即用户在username表单项中输入的内容
                            response.getWriter().print("用户名:" + fileItem.getString() + "<br/>");
                        }
                    } else {//如果当前表单项不是普通表单项,说明就是文件字段
                        String name = fileItem.getName();//获取上传文件的名称
                        // 如果上传的文件名称为空,即没有指定上传文件
                        if(name == null || name.isEmpty()) {
                            continue;
                        }
                        // 获取真实路径,对应${项目目录}/uploads,当然,这个目录必须存在
                        String savepath = this.getServletContext().getRealPath("/uploads");
                        // 通过uploads目录和文件名称来创建File对象
                        File file = new File(savepath, name);
                        // 把上传文件保存到指定位置
                        fileItem.write(file);
                        // 打印上传文件的名称
                        response.getWriter().print("上传文件名:" + name + "<br/>");
                        // 打印上传文件的大小
                        response.getWriter().print("上传文件大小:" + fileItem.getSize() + "<br/>");
                        // 打印上传文件的类型
                        response.getWriter().print("上传文件类型:" + fileItem.getContentType() + "<br/>");
                    }
                }
            } catch (Exception e) {
                throw new ServletException(e);
            } 
        }
  • 相关阅读:
    CentOS下MySQL忘记root密码解决方法【转载】
    Linux给用户添加sudo权限
    C++11 std::chrono库详解
    npm install Error:EPROTO: protocol error, symlink '../mime/cli.js' -> '/vagrant/src/nodejs/node_modules/express/node_modules/send/node_modules/.bin/mime'
    DOT + graphviz 轻松画图
    关于阿里云ESC上go语言项目编译6l: running gcc failed: Cannot allocate memory
    Ubunu下安装Docker
    Ubunu下安装mongoDB
    Docker私有仓库Registry的搭建验证
    Linux的SOCKET编程详解
  • 原文地址:https://www.cnblogs.com/xiaoxiao5ya/p/4923938.html
Copyright © 2020-2023  润新知