springboot多附件和单附件上传

我里面涉及到的静态类和返回类:
静态类(FilePath)

package com.ds.common;


/*
* 文件上传下载路径
* */
public class FilePath {

    //文件存放路径
    public static String PATH="D://DSfile";

    //用户头像上传路径
    public static String CZYB_HEAD_PATH="//user";


}

返回类(RespBean):

package com.ds.entity;


/*
* 公共返回对象
* */
public class RespBean {

    private long code;
    private String message;
    private Object obj;

    public RespBean() {
    }

    public RespBean(long code, String message, Object obj) {
        this.code = code;
        this.message = message;
        this.obj = obj;
    }

    public long getCode() {
        return code;
    }

    public void setCode(long code) {
        this.code = code;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public Object getObj() {
        return obj;
    }

    public void setObj(Object obj) {
        this.obj = obj;
    }

    @Override
    public String toString() {
        return "RespBean{" +
                "code=" + code +
                ", message='" + message + '\'' +
                ", obj=" + obj +
                '}';
    }

    /*
    * 成功返回结果
    * */
    public static RespBean sucess(String message){
        return new RespBean(200,message,null);
    }
    /*
     * 成功返回结果
     * */
    public static RespBean sucess(String message,Object obj){
        return new RespBean(200,message,obj);
    }

    /*
     * 失败返回结果
     * */
    public static RespBean error(String message){
        return new RespBean(500,message,null);
    }
    /*
     * 失败返回结果
     * */
    public static RespBean error(String message,Object obj){
        return new RespBean(500,message,obj);
    }
}

controller类

package com.ds.controller;


import com.ds.common.FilePath;
import com.ds.entity.RespBean;
import com.ds.service.FileService;
import com.ds.utils.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@RestController
public class FileController {

    @Autowired
    FileService fileService;

    @RequestMapping("/fileUpload")
    public RespBean fileUpload(@RequestParam("file") MultipartFile file, String bs){
        if(bs.equals("userHead")){//用户头像上传路径
            Map<String,String> resultMap= this.saveFile(file,FilePath.CZYB_HEAD_PATH);
            return RespBean.sucess(resultMap.get("msg"),resultMap.get("fileId"));
        }else{
            return RespBean.error("上传失败,请联系官网人员");
        }

    }

    private Map<String,String> saveFile(MultipartFile file, String path){
        Map<String,String> resultMap = new HashMap<>();
        if (file.isEmpty()){
            resultMap.put("msg","上传文件为空,请重新上传!");
            return resultMap;
        }
        //上传服务器路径
        String filePath = FilePath.PATH + path;
        //文件名
        String fileName = file.getOriginalFilename();
        //最后下载或者显示文件名称
        String showname = fileName.substring(0,fileName.lastIndexOf("."));
        //获取文件的后缀名
        String suffixName = fileName.substring(fileName.lastIndexOf("."));
        //重新命名,解决中文乱码等问题
        String lastFileName = StringUtil.getStringUUID32()+suffixName;

        //实例化这个文件
        File dsFile = new File(filePath+lastFileName);
        //第一次运行,本地或者服务器没有目录,需要先创建目录
        if(!dsFile.getParentFile().exists()){
            dsFile.getParentFile().mkdirs();
        }

        try {
            file.transferTo(dsFile);
            com.ds.entity.File saveFile = new com.ds.entity.File(path,lastFileName,showname);
            fileService.creatFile(saveFile);
            resultMap.put("msg","上传成功!");
            resultMap.put("fileId",saveFile.getId());
            return resultMap;
        }catch (Exception e){
            e.printStackTrace();
        }
        resultMap.put("msg","上传失败!");
        return resultMap;
    }


    @RequestMapping("/fileUploads")
    public RespBean fileUploads(HttpServletRequest request,String bs){
        List<MultipartFile> files = ((MultipartHttpServletRequest) request).getFiles("file");
        if(bs.equals("userHead")){//用户头像上传路径
            Map<String,String> resultMap= this.saveFiles(files,FilePath.CZYB_HEAD_PATH);
            return RespBean.sucess(resultMap.get("msg"),resultMap.get("fileId"));
        }else{
            return RespBean.error("上传失败,请联系官网人员");
        }

    }


    private Map<String,String> saveFiles(List<MultipartFile> files,String path){
        Map<String,String> resultMap = new HashMap<>();
        com.ds.entity.File saveFile = null;
        String beiz = StringUtil.getStringUUID32();
        boolean judy = false;
        for(MultipartFile file : files){
            //上传服务器路径
            String filePath = FilePath.PATH + path;
            //文件名
            String fileName = file.getOriginalFilename();
            //最后下载或者显示文件名称
            String showname = fileName.substring(0,fileName.lastIndexOf("."));
            //获取文件的后缀名
            String suffixName = fileName.substring(fileName.lastIndexOf("."));
            //重新命名,解决中文乱码等问题
            String lastFileName = StringUtil.getStringUUID32()+suffixName;

            //实例化这个文件
            File dsFile = new File(filePath+lastFileName);
            //第一次运行,本地或者服务器没有目录,需要先创建目录
            if(!dsFile.getParentFile().exists()){
                dsFile.getParentFile().mkdirs();
            }
            try {
                file.transferTo(dsFile);
                saveFile = new com.ds.entity.File(path,lastFileName,showname);
                saveFile.setBeiz(beiz);
                fileService.creatFile(saveFile);
                judy = true;
            }catch (Exception e){
                judy = false;
                e.printStackTrace();
            }
        }

        if(judy){
            resultMap.put("msg","上传成功!");
            resultMap.put("fileId",beiz);
        }else{
            resultMap.put("msg","上传失败!");
        }
        return resultMap;
    }


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值