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进行多文件的效率显然要比字符流写入方式效率上要高

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值