文件分片上传接口调整
This commit is contained in:
parent
71473b3caa
commit
18d90d0081
@ -139,7 +139,7 @@ public class WebFileController {
|
||||
.bizScene(bizScene)
|
||||
.fileName(fileName)
|
||||
.tgtFileKey(tgtFileKey)
|
||||
.fileContent(file.getBytes())
|
||||
.fileContent(file.getInputStream())
|
||||
.uploadId(uploadId)
|
||||
.build();
|
||||
MultipartUploadFileResponse response = fileService.multipartUploadFile(dto);
|
||||
|
||||
@ -63,5 +63,5 @@ public interface BaseS3Service {
|
||||
|
||||
String multipartUploadComplete(String bucketName, String tgtFileKey, String uploadId, List<PartETag> partETags);
|
||||
|
||||
List<PartETag> multipartUploadFile(String bucketName, String tgtFileKey, String uploadId, byte[] fileContent);
|
||||
List<PartETag> multipartUploadFile(String bucketName, String tgtFileKey, String uploadId, InputStream inputStream);
|
||||
}
|
||||
|
||||
@ -196,7 +196,7 @@ public class AliOssServiceImpl implements AliOssService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PartETag> multipartUploadFile(String bucketName, String tgtFileKey, String uploadId, byte[] fileContent) {
|
||||
public List<PartETag> multipartUploadFile(String bucketName, String tgtFileKey, String uploadId, InputStream inputStream) {
|
||||
OSS client = aliOssClient.getClient();
|
||||
try {
|
||||
List<PartETag> partETags = new ArrayList<PartETag>();
|
||||
@ -204,7 +204,7 @@ public class AliOssServiceImpl implements AliOssService {
|
||||
final long partSize = 10 * 1024 * 1024L; //1 MB。
|
||||
|
||||
// 根据上传的数据大小计算分片数。以本地文件为例,说明如何通过File.length()获取上传数据的大小。
|
||||
long fileLength = fileContent.length;
|
||||
long fileLength = inputStream.available();
|
||||
int partCount = (int) (fileLength / partSize);
|
||||
if (fileLength % partSize != 0) {
|
||||
partCount++;
|
||||
@ -221,7 +221,7 @@ public class AliOssServiceImpl implements AliOssService {
|
||||
// 分片上传uploadId
|
||||
partRequest.setUploadId(uploadId);
|
||||
// 分片文件
|
||||
InputStream inputStream = new ByteArrayInputStream(fileContent);
|
||||
//InputStream inputStream = new ByteArrayInputStream(fileContent);
|
||||
inputStream.skip(startPos);
|
||||
partRequest.setInputStream(inputStream);
|
||||
// 分片大小。除了最后一个分片没有大小限制,其他的分片最小为100 KB。
|
||||
|
||||
@ -48,5 +48,5 @@ public interface FileManager {
|
||||
|
||||
String multipartUploadComplete(String bucketName, String tgtFileKey, String uploadId, List<PartETag> partETags);
|
||||
|
||||
List<PartETag> multipartUploadFile(String bucketName, String tgtFileKey, byte[] fileContent, MultipartUploadFileDto dto);
|
||||
List<PartETag> multipartUploadFile(String bucketName, String tgtFileKey, InputStream inputStream, MultipartUploadFileDto dto);
|
||||
}
|
||||
|
||||
@ -6,6 +6,8 @@ import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import java.io.File;
|
||||
import java.io.InputStream;
|
||||
|
||||
/**
|
||||
* @Author: liyong.tian
|
||||
@ -30,7 +32,7 @@ public class MultipartUploadFileDto {
|
||||
@NotBlank
|
||||
private String tgtFileKey;
|
||||
|
||||
private byte[] fileContent;
|
||||
private InputStream fileContent;
|
||||
|
||||
/**
|
||||
* oss上传时的上传id
|
||||
|
||||
@ -72,7 +72,7 @@ public class FileManagerImpl implements FileManager {
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PartETag> multipartUploadFile(String bucketName, String tgtFileKey, byte[] fileContent, MultipartUploadFileDto dto) {
|
||||
public List<PartETag> multipartUploadFile(String bucketName, String tgtFileKey, InputStream inputStream, MultipartUploadFileDto dto) {
|
||||
List<com.aliyun.oss.model.PartETag> partETags = aliOssService.multipartUploadFile(bucketName, tgtFileKey, dto.getUploadId(), dto.getFileContent());
|
||||
return BeanConvertUtil.copyList(partETags, PartETag.class);
|
||||
}
|
||||
|
||||
@ -4,6 +4,7 @@ import cn.axzo.framework.auth.domain.ContextInfo;
|
||||
import cn.axzo.oss.manager.api.dto.request.*;
|
||||
import cn.axzo.oss.manager.api.dto.response.*;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.List;
|
||||
|
||||
@ -43,5 +44,5 @@ public interface FileService {
|
||||
|
||||
FileInformationResponse multipartUploadComplete(MultipartUploadCompleteDto dto);
|
||||
|
||||
MultipartUploadFileResponse multipartUploadFile(MultipartUploadFileDto dto);
|
||||
MultipartUploadFileResponse multipartUploadFile(MultipartUploadFileDto dto) throws IOException;
|
||||
}
|
||||
|
||||
@ -31,6 +31,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.core.env.Environment;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
@ -181,10 +182,10 @@ public class FileServiceImpl implements FileService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public MultipartUploadFileResponse multipartUploadFile(MultipartUploadFileDto dto) {
|
||||
public MultipartUploadFileResponse multipartUploadFile(MultipartUploadFileDto dto) throws IOException {
|
||||
FileUploadConfig fileUploadConfig = getFileUploadConfig(dto.getAppCode(), dto.getBizScene());
|
||||
// 判断容量
|
||||
isFileConform(fileUploadConfig, dto.getFileContent().length, dto.getFileName());
|
||||
isFileConform(fileUploadConfig, dto.getFileContent().available(), dto.getFileName());
|
||||
|
||||
List<PartETag> partETags = fileManager.multipartUploadFile(fileUploadConfig.getBucketName(),
|
||||
dto.getTgtFileKey(), dto.getFileContent(), dto);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user