package com.sandu.common.file.impl;
|
|
import cn.hutool.core.io.FileUtil;
|
import cn.hutool.core.lang.UUID;
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSONObject;
|
import com.qiniu.http.Response;
|
import com.qiniu.storage.Configuration;
|
import com.qiniu.storage.UploadManager;
|
import com.qiniu.util.Auth;
|
import com.sandu.common.enums.FileStorageEnums;
|
import com.sandu.common.execption.BusinessException;
|
import com.sandu.common.file.FileUploadDto;
|
import com.sandu.common.file.IFileUpload;
|
import com.sandu.common.file.config.QiNiuOssProperties;
|
import lombok.AllArgsConstructor;
|
import lombok.SneakyThrows;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import javax.imageio.ImageIO;
|
import java.awt.image.BufferedImage;
|
import java.io.File;
|
import java.io.IOException;
|
|
/**
|
* @author chenjiantian
|
* @date 2021/9/1 18:38
|
* 七牛上传
|
*/
|
@AllArgsConstructor
|
public class QiNiuFileUploadImpl implements IFileUpload {
|
|
private QiNiuOssProperties qiNiuOssProperties;
|
|
|
@SneakyThrows
|
@Override
|
public FileUploadDto uploadFile(MultipartFile multipartFile) {
|
String originalFilename = multipartFile.getOriginalFilename();
|
FileUploadDto uploadDto = new FileUploadDto();
|
String suffix = FileUtil.getSuffix(originalFilename);
|
String fileName = UUID.fastUUID().toString() + "." + suffix;
|
|
Configuration cfg = new Configuration();
|
UploadManager uploadManager = new UploadManager(cfg);
|
Auth auth = Auth.create("accessKey", qiNiuOssProperties.getAccessKey());
|
String upToken = auth.uploadToken(qiNiuOssProperties.getBucket());
|
Response response = uploadManager.put(multipartFile.getBytes(), null, upToken);
|
if (!response.isOK()) {
|
throw new BusinessException("七牛上传出错" + response.statusCode);
|
}
|
JSONObject jsonObject = JSON.parseObject(response.bodyString());
|
String key = jsonObject.getString("key");
|
String url = new File(qiNiuOssProperties.getHost(),key).getAbsolutePath();
|
uploadDto.setFileUrl(url);
|
|
uploadDto.setOriginName(originalFilename);
|
uploadDto.setFileName(fileName);
|
uploadDto.setFileType(FileUtil.extName(originalFilename));
|
uploadDto.setStorageType(FileStorageEnums.QINIU.getCode());
|
uploadDto.setFileSize(multipartFile.getSize());
|
|
if (IMAGE_SUFFIX_LIST.contains(uploadDto.getFileType())) {
|
BufferedImage img = null;
|
try {
|
img = ImageIO.read(multipartFile.getInputStream());
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
if (img != null && img.getWidth() >= 0 && img.getHeight() >= 0) {
|
uploadDto.setWidth(img.getWidth());
|
uploadDto.setHeight(img.getHeight());
|
}
|
}
|
return uploadDto;
|
}
|
}
|