后端文件上传的两种方式

采用注解@MultipartConfig

 @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");
        //获取前台请求的所有文件(包含普通字段在内)
        System.out.println(request.getParameter("texts"));
        Collection<Part> parts = request.getParts();
        System.out.println(parts.size());

        for (Part p : parts) {
            //普通字段封装为part对象数据为null
            if (p.getSubmittedFileName() != null) {
                InputStream inputStream = p.getInputStream();
                BufferedInputStream bis = new BufferedInputStream(inputStream);
                File file = new File("C://Users//Fu123//Desktop//hjk", UUID.randomUUID() + p.getSubmittedFileName());
                FileOutputStream fos = new FileOutputStream(file);
                byte[] b = new byte[204800000];
                int len = 0;
                while ((len = bis.read(b)) != -1) {
                    fos.write(b, 0, len);
                }
                bis.close();
                fos.flush();
                fos.close();
            }
        }

    }

采用导包形式

先导入这两个依赖

        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.2.2</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.2</version>
        </dependency>

 @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");// 设置获取字体
        response.setCharacterEncoding("UTF-8"); // 设置返回字体
//ServletContext ctx = getServletConfig().getServletContext();// 获取上下文 方式2
        ServletContext ctx = request.getServletContext();// 获取上下文应用
        DiskFileItemFactory factory = new DiskFileItemFactory();// 自动导入类 使用工具 commons-fileupload
        File repository = (File) ctx.getAttribute("javax.servlet.context.tempdir");// 获取临时文件的存储路径
        factory.setRepository(repository);// 设置工程对象的仓库
        String basePath = ctx.getRealPath("/res");// 设置存储路径
        System.out.println(basePath);
        ServletFileUpload handler = new ServletFileUpload(factory);// 实例化 servletFileupload 上传
        try {
            List<FileItem> items = handler.parseRequest(request);
            for (FileItem fileItem : items) {
                if (fileItem.isFormField()) {
                    System.out.print("非文件数据");
                } else {
                    String fileName = fileItem.getName();// 获取文件名
                    String fileType = fileItem.getContentType();// 获取文件类型
                    System.out.println(fileName);
                    System.out.println(fileType);
                    if (fileType != "do") {
                        File file = new File("C://Users//Fu123//Desktop//hjk" + "/" + fileName);// 创建文件实例
                        try {
                            fileItem.write(file);// 写入数据到文件
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }

                }
            }
        } catch (FileUploadException e) {
            e.printStackTrace();
        }
    }

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值