用户登录问题修改
This commit is contained in:
parent
cc0f108d2b
commit
aa83d449fb
|
|
@ -3,10 +3,8 @@ package com.bonus.file.service.impl;
|
||||||
import com.alibaba.nacos.common.utils.UuidUtils;
|
import com.alibaba.nacos.common.utils.UuidUtils;
|
||||||
import com.aliyun.oss.model.OSSObject;
|
import com.aliyun.oss.model.OSSObject;
|
||||||
import com.bonus.common.core.domain.R;
|
import com.bonus.common.core.domain.R;
|
||||||
import com.bonus.common.core.utils.StringUtils;
|
|
||||||
import com.bonus.common.core.utils.file.FileUtils;
|
import com.bonus.common.core.utils.file.FileUtils;
|
||||||
import com.bonus.common.core.utils.file.MimeTypeUtils;
|
import com.bonus.common.core.utils.file.MimeTypeUtils;
|
||||||
import com.bonus.file.controller.SysFileController;
|
|
||||||
import com.bonus.file.service.ISysFileService;
|
import com.bonus.file.service.ISysFileService;
|
||||||
import com.bonus.file.utils.FileUploadUtils;
|
import com.bonus.file.utils.FileUploadUtils;
|
||||||
import com.bonus.file.utils.OssUtils;
|
import com.bonus.file.utils.OssUtils;
|
||||||
|
|
@ -15,23 +13,21 @@ import org.apache.commons.lang3.ObjectUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||||
import org.springframework.http.HttpHeaders;
|
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.http.MediaType;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
import java.net.URLEncoder;
|
|
||||||
import java.nio.charset.StandardCharsets;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
import java.util.concurrent.ExecutionException;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author jiang
|
* @author jiang
|
||||||
*/
|
*/
|
||||||
|
|
@ -58,7 +54,6 @@ public class OssServiceImpl implements ISysFileService {
|
||||||
try {
|
try {
|
||||||
//验证文件扩展名和大小
|
//验证文件扩展名和大小
|
||||||
FileUploadUtils.assertAllowed(file, MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION);
|
FileUploadUtils.assertAllowed(file, MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION);
|
||||||
|
|
||||||
String originalFilename = Objects.requireNonNull(file.getOriginalFilename(), "文件名不能为空");
|
String originalFilename = Objects.requireNonNull(file.getOriginalFilename(), "文件名不能为空");
|
||||||
originalFilename = originalFilename.replace(" ", "");
|
originalFilename = originalFilename.replace(" ", "");
|
||||||
String extension = originalFilename.substring(originalFilename.lastIndexOf('.'));
|
String extension = originalFilename.substring(originalFilename.lastIndexOf('.'));
|
||||||
|
|
@ -71,19 +66,32 @@ public class OssServiceImpl implements ISysFileService {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<SysFile> uploadFiles(MultipartFile[] files) throws Exception {
|
public List<SysFile> uploadFiles(MultipartFile[] files) throws InterruptedException, ExecutionException {
|
||||||
try {
|
// 将每个文件的上传操作作为一个 CompletableFuture 任务
|
||||||
List<SysFile> sysFiles = new ArrayList<>();
|
List<CompletableFuture<SysFile>> futures = new ArrayList<>();
|
||||||
|
|
||||||
for (MultipartFile file : files) {
|
for (MultipartFile file : files) {
|
||||||
SysFile sysFile = uploadFile(file);
|
CompletableFuture<SysFile> future = CompletableFuture.supplyAsync(() -> {
|
||||||
sysFiles.add(sysFile);
|
try {
|
||||||
}
|
return uploadFile(file);
|
||||||
return sysFiles;
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new Exception(e);
|
throw new RuntimeException("文件上传失败: " + file.getOriginalFilename(), e);
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
futures.add(future);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 使用 allOf 等待所有任务完成,并收集结果
|
||||||
|
CompletableFuture<Void> allOf = CompletableFuture.allOf(futures.toArray(new CompletableFuture[0]));
|
||||||
|
|
||||||
|
// 在所有上传任务完成后,获取每个文件的上传结果
|
||||||
|
return allOf.thenApply(v -> futures.stream()
|
||||||
|
.map(CompletableFuture::join) // 获取每个 CompletableFuture 的结果
|
||||||
|
.collect(Collectors.toList())
|
||||||
|
).get(); // .get() 会阻塞直到所有任务完成
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void downloadFile(HttpServletResponse response, String urlStr) throws Exception {
|
public void downloadFile(HttpServletResponse response, String urlStr) throws Exception {
|
||||||
R<OSSObject> ossObjectR = ossUtils.download(urlStr);
|
R<OSSObject> ossObjectR = ossUtils.download(urlStr);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue