zoukankan      html  css  js  c++  java
  • 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进行多文件的效率显然要比字符流写入方式效率上要高

  • 相关阅读:
    集合介绍,创建,添加,删除。
    字典简介、操作、内置函数、练习题
    git教程——简单总结
    前端性能优化总结
    小米2018春招实习笔试题总结
    浏览器缓存控制 以及 在url框中回车、F5 和 Ctrl + F5的区别
    携程2018春招实习前端开发笔试题分享
    不同方式实现两列布局
    移动端开发-viewport与媒体查询
    华为2018春招前端开发实习生笔试题分享
  • 原文地址:https://www.cnblogs.com/liaojie970/p/5568054.html
Copyright © 2011-2022 走看看