使用base64格式漂亮上传文件的后端接口代码 -java

使用base64格式漂亮上传文件的后端接口代码
最好完成java 控制层的实现

需要的是批量上传文件的接口

这种代码百度不是一箩筐?


import com.jeewechat.wechat.entity.SftpFile;
import com.jeewechat.wechat.mapper.FileMapper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.log4j.Log4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.math.BigDecimal;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.*;

@Api(value = "BatchFilesController", tags = {"文件(附件)信息表"})
@Log4j
@Controller
@RequestMapping("/batchFiles")
public class BatchFilesController {
    @Autowired
    private FileMapper fileMapper;

    /**
     * @param userId 用户ID
     * @param files  文件对象
     * @return java.lang.String
     * @description TODO 批量文件上传
     * @author WangTianLiang
     * @date 2021/5/21
     */
    @ApiOperation("批量文件上传")
    @RequestMapping(value = "batchUploadFile", method = RequestMethod.POST)
    @ResponseBody
    public Map<String, Object> batchUploadFile(@RequestParam("files") MultipartFile[] files, @RequestParam("userId") String userId) {
        Map<String, Object> mapData = new HashMap<>();
        //step 1: 判断校验文件流是否有文件
        if (files == null || files.length <= 0) {
            mapData.put("success", false);//false:成功,false:失败
            mapData.put("msg", "系统未检测到文件流");
            return mapData;
        }
        //step 2: 创建List集合用于存储文件对象
        List<SftpFile> sftpFileList = new ArrayList<>();
        //step 3: 创建List集合用于存储文件ID,返给前端
        List<String> sftpFileIdList = new ArrayList<>();

        for (MultipartFile file : files) {
            //step 4: 封装实例对象
            SftpFile sftpFile = new SftpFile();
            String fileId = SftpFile.createDbId();//随机生产主键ID
            sftpFile.setFileId(fileId);//文件id
            sftpFile.setUserId(userId);//操作用户id
            sftpFile.setCreateTime(new Date());//创建时间

            // 获取原始名字
            String fileNameUp = file.getOriginalFilename();
            sftpFile.setFileNameUp(fileNameUp);//上传文件名称

            sftpFile.setFileName(fileId);//存储文件的名称

            // 获取后缀名
            String suffixType = fileNameUp.substring(fileNameUp.lastIndexOf(".") + 1);
            sftpFile.setFileType(suffixType);//文件类型

            //获得文件大小
            Float size = Float.parseFloat(String.valueOf(file.getSize())) / 1024;
            BigDecimal b = new BigDecimal(size);
            size = b.setScale(2, BigDecimal.ROUND_HALF_UP).floatValue();
            sftpFile.setFileSize(size.toString());//文件大小(字节单位)

            // 文件保存路径 你还可以在拼接一层路径,例如 20210521 每天上传的都会生成一个新的文件加里
            String filePath = "E://image//";
            sftpFile.setFilePath(filePath);//文件上传路径

            // 文件重命名,防止重复
            String filePathName = filePath + fileId + "." + sftpFile.getFileType();
            //本机ip 静态方法获取InetAddress对象。
            InetAddress ia = null;
            try {
                ia = ia.getLocalHost();// 获取本地主机
                sftpFile.setServerIp(ia.getHostAddress());
            } catch (UnknownHostException e) {
                log.error("文件传输服务器失败:", e);
            }
            //step 5: 创建文件对象
            File dest = new File(filePathName);
            //step 6: 判断路径是否存在,如果不存在则创建
            if (!dest.getParentFile().exists()) {
                dest.getParentFile().mkdirs();
            }

            //step 7: 文件存在,返回
            if (dest.exists()) {
                mapData.put("success", false);//false:成功,false:失败
                mapData.put("msg", "文件已存在,请重新上传" + fileNameUp);
                return mapData;
            }
            try {
                //step 8: 保存到服务器中
                file.transferTo(dest);
                //step 9: 将生产的文件ID 和文件对象分别存入对应的集合
                sftpFileIdList.add(fileId);
                sftpFileList.add(sftpFile);
            } catch (Exception e) {
                log.error("文件传输服务器失败:", e);
            }
        }
        //判断校验存储文件对象集合是否为空、集合长度是否大于0
        if (sftpFileList != null && sftpFileList.size() > 0) {
            //step 10: 批量添加文件对象
            int i = fileMapper.batchInsertFile(sftpFileList);
            //step 11: 判断是否添加成功  存储文件对象的集合长度是否等于数据库执行的条数
            if (sftpFileList.size() == i) {
                mapData.put("success", true);//false:成功,false:失败
                mapData.put("msg", "文件上传成功");
                mapData.put("data", sftpFileIdList);
                return mapData;
            }
        }
        mapData.put("success", false);//false:成功,false:失败
        mapData.put("msg", "文件上传失败");
        return mapData;
    }
}