SpringBoot 實現文件上傳服務器

我把用 MultipartFile 實現文件上傳封裝了一下。上傳文件之後自定義路徑並把修改文件名爲 UUID ,避免文件名重複。我知道你遇到問題了,需要我的源碼來解決你的問題,下面我詳細的把代碼給出,照着我的詳細流程,定能解決你的問題。沒解決問題或是我講得不夠清楚?請評論罵我!!

 

1、引入swagger 和 lombok

<!-- swagger -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.5.0</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.5.0</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.20</version>
        </dependency>

2、創建上傳信息的實體類

 


@ApiModel(description = "處理後上傳文件的信息")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class UploadInfo implements Serializable {
    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "上傳結果")
    private String result;

    @ApiModelProperty(value = "初始文件名")
    private String beginFileName;

    @ApiModelProperty(value = "最終上傳文件名")
    private String lastFileName;

    @ApiModelProperty(value = "文件類型")
    private String FileType;

    @ApiModelProperty(value = "文件大小")
    private String fileSize;

    @ApiModelProperty(value = "文件上傳的地址")
    private String uploadUrl;

}

3、在service層新建 UploadService

/**
     * 上傳文件接口
     *
     * @param file  上傳的文件
     * @param uploadFilePath 上傳到服務器的路徑
     * @return 上傳並處理後的信息
     * @throws Exception 上傳異常
     */
    UploadInfo upload(MultipartFile file, String uploadFilePath) throws Exception;

 

4、新建一個UploadServiceImpl

這是上面哪個Service的實現類。

@Service
public class UploadServiceImpl implements UploadService {

    @Override
    public UploadInfo upload(MultipartFile file, String uploadFilePath) throws Exception {
        if (file.isEmpty())
            return null;
        UploadInfo uploadInfo = new UploadInfo();
        String originalFilename;
        String fileName;
        originalFilename = file.getOriginalFilename();
        fileName = UUID.randomUUID().toString() + file.getOriginalFilename();
        String fileType = fileName.substring(fileName.lastIndexOf(".") + 1);
        long fileSize = file.getSize();
        File packageFile = new File(uploadFilePath);
        if (!packageFile.exists()) {
            packageFile.mkdir();
        }
        File targetFile = new File(uploadFilePath + "/" + fileName);
        file.transferTo(targetFile);
        uploadInfo.setBeginFileName(originalFilename);
        uploadInfo.setLastFileName(fileName);
        uploadInfo.setFileType(fileType);
        uploadInfo.setFileSize(Long.toString(fileSize));
        uploadInfo.setUploadUrl(targetFile.toString());
        uploadInfo.setResult("上傳成功");
        return uploadInfo;
    }
}

5、新建Controller測試

 @Autowired
    private UploadService uploadService;
    private final static String UPLOAD_PATH = "C:/file";
    
    @ApiOperation(value = "上傳文件測試",notes = "請記得上傳時加上參數 file !")
    @PostMapping(value = "/uploadFile",consumes= MediaType.MULTIPART_FORM_DATA_VALUE)
    public UploadInfo uploadTest(@RequestParam("file") MultipartFile file){
        UploadInfo uploadInfo = null;
        try{
            uploadInfo = uploadService.upload(file,UPLOAD_PATH);
        }catch (Exception e){
            System.out.println(e.toString());
        }
        return uploadInfo;
    }

PostMan測試結果:

 

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