SpringBoot实现多个文件上专并保存到服务器

添加依赖

创建静态上传页面
添加上传文件控制器
添加上传文件控制器 注意多文件上传的细节,客户端要开户多文件选择支持,服务端要遍历上传后的文件数组
启动工程并打开上传页面
选择要上传的文件
确认后上传
上传成功后,返回文件路径集合字符串
通过返回的地址访问上传后的文
完成的控制器源码

package cn.metrox.test;

import org.springframework.web.bind.annotation.PostMapping;

import org.springframework.web.bind.annotation.RestController;

import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;

import java.io.File;

import java.text.SimpleDateFormat;

import java.util.ArrayList;

import java.util.Date;

import java.util.List;

import java.util.UUID;

@RestController

public class FileUploadController {

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

    @PostMapping("/uploads")

    public String upload(MultipartFile[] uploadFiles, HttpServletRequest req){

        String realPath = req.getSession().getServletContext().getRealPath("/uploadFile/");

        String format = sdf.format(new Date());

        File forlder = new File(realPath+format);

        if(!forlder.isDirectory()){

            forlder.mkdirs();

        }

        List filePaths = new ArrayList();

        for(MultipartFile uploadFile:uploadFiles) {

            String oldName = uploadFile.getOriginalFilename();

            String newName = UUID.randomUUID().toString() + oldName.substring(oldName.lastIndexOf("."),oldName.length());

            try{

                uploadFile.transferTo(new File(forlder,newName));

                String filePath = req.getScheme()+"://"+req.getServerName()+":"+req.getServerPort()+"/uploadFile/"+ format+"/"+newName;

                filePaths.add(filePath);

            }catch (Exception e){

                e.printStackTrace();

            }

        }

        if(filePaths.stream().count() == uploadFiles.length){

            return filePaths.toString();

        }else{

            return "上传失败,有些文件没有上传成功";

        }

    }

}

你可能感兴趣的:(SpringBoot实现多个文件上专并保存到服务器)