SpringBoot单/多文件上传实现

单文件上传

HTML

 <form action="/upload" method="post" enctype="multipart/form-data">
        <p>
            选择文件1:<input type="file" name="files">
        </p>
        <p>
            <input type="submit" value="提交">
        </p>
    </form>

控制层

@Controller
public class FileUploadController {
    private Logger logger= LoggerFactory.getLogger(this.getClass());

    @GetMapping("/upload")
    public String upload(){
        return "test";
    }

    @PostMapping("/upload")
    @ResponseBody
       /**
         * 注意:此处的 @RequestParam("files")   参数中的  files  时HTML页面中的 <input type="file" name="files">  中的name的值
         */
    public String uploadFile(String name, @RequestParam("files") MultipartFile file){

        /**
         * 没有上传文件
         */
        if (file.isEmpty()) {
            return "上传失败,请选择文件";
        }

        /**
         * 正常上传文件
         */
        //获取上传文件的文件名
        String fileName=file.getOriginalFilename();
        logger.info("文件名为:"+fileName);

        //获取文件后缀名
        String suffixName=fileName.substring(fileName.lastIndexOf("."));
        logger.info("文件后缀名为:"+suffixName);

//        //重新生成文件名
//        suffixName= UUID.randomUUID().toString()+suffixName;

        //指定文件存储目录
        String savePath="E:/log/";
        logger.info("文件保存目录"+savePath);
//        java.io.File newFile=new java.io.File(savePath+suffixName);
        java.io.File newFile=new java.io.File(savePath+fileName);

        try {
            file.transferTo(newFile);
            logger.info("上传成功!");
            return "上传成功!";
        } catch (IOException e) {
            e.printStackTrace();
            logger.error(e.toString());
        }
            return "上传失败";
    }
}

多文件上传

HTML

 <form action="/uploadMore" method="post" enctype="multipart/form-data">
        <p>
            选择文件1:<input type="file" name="files">
        </p>
        <p>
            选择文件2:<input type="file" name="files">
        </p>
        <p>
            选择文件3:<input type="file" name="files">
        </p>
        <p>
            <input type="submit" value="提交">
        </p>
    </form>
@Controller
public class FileUploadMore {
    private Logger logger= LoggerFactory.getLogger(this.getClass());

    @GetMapping("/uploadMore")
    public String uploadMore(){
        return "test1";
    }
    @PostMapping("/uploadMore")
    @ResponseBody
    public String uploadMoreFile(HttpServletRequest request, @RequestParam("files") MultipartFile[] multipartFiles) throws IllegalStateException {
        //获取前端上传的文件列表
        List<MultipartFile> files = ((MultipartHttpServletRequest) request).getFiles("files");
        /**
         * 定义文件上传保存的路径
         */
        String uploadDir = "E:/log/";
        //
        for (int i = 0; i < files.size(); i++) {
            MultipartFile files1 = files.get(i);
            if (files1.isEmpty()) {
                logger.info("上传第" + (i++) + "个文件失败,请重新尝试上传文件!");
            }
            String fileName=files1.getOriginalFilename();
            try {
                files1.transferTo(new File(uploadDir + fileName));
                logger.info("第" + (i + 1) + "个文件上传成功!");
            } catch (IOException e) {
                e.printStackTrace();
                System.err.println(e.toString());
                logger.info("第" + (i++) + "个文件上传失败!");
            }
        }
        return "上传成功";
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值