• springMVC实现多文件上传


    <h2>上传多个文件 实例</h2>
        <form action="/workreport/uploadMultiFile.html" method="post" enctype="multipart/form-data">
            <p>
                选择文件:<input type="file" name="files">
            <p>
                选择文件:<input type="file" name="files">
            <p>
                选择文件:<input type="file" name="files">
            <p>
                <input type="submit" value="提交">
        </form>
       // 多文件上传
        @RequestMapping(value = "/uploadMultiFile")
        public String uploadMultiFile(HttpServletRequest request) {
            try {
                // 创建一个通用的多部分解析器
                CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
                // 判断 request 是否有文件上传,即多部分请求
                if (multipartResolver.isMultipart(request)) {
                    // 转换成多部分request
                    MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
                    // get the parameter names of the multipart files contained in this request
                    Iterator<String> iter = multiRequest.getFileNames();
                    while (iter.hasNext()) {
                        // 取得上传文件
                        List<MultipartFile> multipartFiles = multiRequest.getFiles(iter.next());
                        String basePath = "F:/testDir/";
                        for (MultipartFile multipartFile : multipartFiles) {
                            String fileName = multipartFile.getOriginalFilename();
                            if (StringUtils.isNotEmpty(fileName)) {
                                multipartFile.transferTo(new File(basePath + fileName));
                            }
                        }
                    }
                }
            } catch (IllegalStateException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return "test/success";
        }

    以下是以文件流的形式保存上传的文件:

        // 文件上传
        @RequestMapping(value = "/uploadFile", method = RequestMethod.POST)
        public String uploadFile(HttpServletRequest request) throws IOException {
            MultipartHttpServletRequest multipartHttpServletRequest = (MultipartHttpServletRequest) request;
            MultipartFile file = multipartHttpServletRequest.getFile("file");
            String fileName = file.getOriginalFilename();
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
            String path = "F:/" + simpleDateFormat.format(new Date()) + fileName.substring(fileName.lastIndexOf("."));
            OutputStream fileOutputStream = new FileOutputStream(path);
            InputStream inputStream = file.getInputStream();
            byte[] buffer = new byte[2048];
            while (inputStream.read(buffer) != -1) {
                fileOutputStream.write(buffer);
            }
            log.info(path);
            fileOutputStream.flush();
            fileOutputStream.close();
            inputStream.close();
            return "test/success";
        }

    注:使用springMVC进行多文件的效率显然要比字符流写入方式效率上要高

  • 相关阅读:
    洛谷P3796 【模板】AC自动机(加强版)(AC自动机)
    洛谷P3203 [HNOI2010]弹飞绵羊(LCT,Splay)
    洛谷P1501 [国家集训队]Tree II(LCT,Splay)
    LCT总结——概念篇+洛谷P3690[模板]Link Cut Tree(动态树)(LCT,Splay)
    [BZOJ3172][TJOI2013]单词 AC自动机
    [BZOJ1968][AHOI2005]COMMON约数研究 数学
    [BZOJ1053][SDOI2005]反素数ant 数学
    [BZOJ1045][HAOI2008]糖果传递 数学
    [BZOJ2733][HNOI2012]永无乡 线段树合并
    [BZOJ1005][HNOI2008]明明的烦恼 数学+prufer序列+高精度
  • 原文地址:https://www.cnblogs.com/liaojie970/p/5568054.html
Copyright © 2020-2023  润新知