SpringBoot項目實現單文件上傳(一)

前言

       文件的上傳和下載是所有後端程序員會經常用到的操作,最近Springboot項目恰好有文件上傳與下載的需求,爲了增強記憶,就記錄下來,若是其中有哪些不足的地方,請指出來,增強學習交流。

配置文件準備工作

首先,先在 application.yml 配置文件中配置上傳文件限制,這個根據自身需求來做調整。

其次,指定需將文件上傳到哪個服務器下的具體路徑。

工具類準備工作

UploadFolderEnum 類主要是將文件存在服務器具體某個文件下,以及其文件格式等。

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

public enum UploadFolderEnum {
    IMAGE("imageWeb","jpg","jpg,png,jpeg"),
    PDF("userPdf","pdf","pdf"),
    HTML("userHtml","html","html"),
    IMAGE_APP("imageApp","jpg","jpg,png,jpeg"),
    DOC("userDoc","doc","doc"),
    EXCEL("config","xlsx","xlsx"),

    UploadFolderEnum(String folderName,String suffix) {
        this.folderName = folderName;
        this.suffix=suffix;
    }

    UploadFolderEnum(String folderName,String suffix,String fileType) {
        // 文件路徑
        this.folderName = folderName;
        // 默認後綴
        this.suffix=suffix;
        // 文件 准許後綴類型
        this.fileType=fileType;
    }

    private   String  folderName;
    private   String  suffix;
    private   String  fileType;
    public String getFolderName() {
        return folderName;
    }

    public String  doDateFilePath(){
        return  "/"+this.folderName+"/"+ getNowDate();
    }
    public String getNowDate(){
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        String time = df.format( new Date(  ) );
        return time;
    }

    public String getDefaultFileName(String suffix){
        if(fileType.contains(suffix)){
            return CommonUtil.retrieveUUID()+"."+suffix;
        }
        return  getDefaultFileName();
    }

    public String getDefaultFileName(){
       return   CommonUtil.retrieveUUID()+"."+suffix;
    }
}

單文件上傳

引入服務器IP地址,文件存放路徑,文件命名格式。

單文件上傳的核心代碼,這是相對比較簡單的方式,都是一些業務代碼。

@PostMapping("/uploadFile")
@ApiOperation(value = "文件上傳 單文件")
public ObjectRestResponse Upload(@RequestParam("file") MultipartFile file) {
    //記錄日誌
    log.info("開始上傳文件!");
    //文件判斷爲空
    if (file.isEmpty()) {
        return ObjectRestResponse.error("上傳失敗,請選擇文件");
    }

    //獲取文件原始名稱
    String fileOriginalName = file.getOriginalFilename();
    //設置文件前綴
    String fliePrefix;
    //設置文件後綴
    String fileSuffix;
    fliePrefix = UUID.randomUUID().toString().replace("-", "");
    fileSuffix = fileOriginalName.split("\\.")[1];

    String newfilePath = image.doDateFilePath() + "/";
    //唯一服務地址
    String newfilePathOnly = basePath + newfilePath;

    //判斷地址是否存在
    File fileUIS = new File(newfilePathOnly);
    //如果不存在文件夾創建文件夾
    if (!fileUIS.exists()) {
        fileUIS.mkdirs();
    }
    String OnlyStr = newfilePathOnly + fliePrefix + "." + fileSuffix;
    //設置文件載入到的地址
    File dest = new File(OnlyStr);
    try {
        file.transferTo(dest);
        log.info("文件:" + fliePrefix + "." + fileSuffix + "上傳成功");
        String filePath = fileIp + newfilePath + fliePrefix + "." + fileSuffix;
        Map<String, Object> object = new HashMap<>();
        object.put("filePath", filePath);
        object.put("UUID", fliePrefix);
        return ObjectRestResponse.success(object);
    } catch (IOException e) {
        log.error(e.toString(), e);
    }
    return ObjectRestResponse.error("上傳失敗!");
}

 

這就是簡單的單文件上傳到服務器上的一種方式,若是存在不足,歡迎大家指出!!!

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章