package com.isoftstone.common.controller;
import com.isoftstone.common.external.model.ActionResult;
import com.isoftstone.common.utils.Base64ToMultipart;
import com.isoftstone.common.utils.MultipartOssUtil;
import com.isoftstone.common.utils.OssUtil;
import com.isoftstone.common.utils.StrUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.Arrays;
import java.util.List;
@RestController
@CrossOrigin
@RequestMapping("api")
public class UploadController {
private static final Logger log = LoggerFactory.getLogger(UploadController.class);
@PostMapping("upload")
public ActionResult<String> upload(@RequestParam(value = "file", required = false) MultipartFile file,
@RequestParam(value = "base64File", required = false) String base64File) {
try {
if (StrUtil.isNotBlank(base64File)) {
MultipartFile multipartFile = Base64ToMultipart.base64ToMultipart(base64File);
if (multipartFile == null) {
log.error("文件不存在, base64File: {}", base64File);
return ActionResult.getErrorResult("文件不存在");
}
file = multipartFile;
}
String originalFilename = file.getOriginalFilename();
String fileType = originalFilename.substring(originalFilename.lastIndexOf("."));
if (videoFileTypeList().contains(fileType)) {
return MultipartOssUtil.uploadToOSS(file);
}
return OssUtil.uploadToOSS(file);
} catch (Exception e) {
log.error("文件上传异常: ", e);
return ActionResult.getErrorResult("文件上传失败");
}
}
private static List<String> videoFileTypeList() {
return Arrays.asList("mpg", "wmv", "3gp", "mov", "asf", "asx", "flv", "mkv", ".mp4", ".avi", ".m3u8");
}
}
package com.isoftstone.common.utils;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.common.auth.DefaultCredentialProvider;
import com.aliyun.oss.model.*;
import com.isoftstone.common.external.model.ActionResult;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.concurrent.CountDownLatch;
import static com.isoftstone.common.config.OSSProperties.*;
public class MultipartOssUtil {
private static final Logger logger = LoggerFactory.getLogger(MultipartOssUtil.class);
public static ActionResult<String> uploadToOSS(MultipartFile file) {
OSS ossClient = new OSSClientBuilder().build(OSS_ENDPOINT, OSS_ACCESS_KEY_ID, OSS_ACCESS_KEY_SECRET);
if (!ossClient.doesBucketExist(OSS_BUCKET_NAME)) {
logger.error("当前bucket不存在,终止执行");
return ActionResult.getErrorResult("当前bucket不存在,终止执行");
}
URL url;
try {
String originalFilename = file.getOriginalFilename();
String fileType