+1
-1
@@ -33,7 +33,7 @@ services:
|
|||||||
container_name: app-backend
|
container_name: app-backend
|
||||||
environment:
|
environment:
|
||||||
FILE_STORAGE_PATH: /data/uploads
|
FILE_STORAGE_PATH: /data/uploads
|
||||||
MAX_FILE_SIZE: 1073741824
|
MAX_FILE_SIZE: 10737418240
|
||||||
FILE_CHUNK_SIZE: 5242880
|
FILE_CHUNK_SIZE: 5242880
|
||||||
POSTGRES_DB: no_copy_
|
POSTGRES_DB: no_copy_
|
||||||
POSTGRES_USER: postgres
|
POSTGRES_USER: postgres
|
||||||
|
|||||||
@@ -89,29 +89,34 @@ public class ApiController {
|
|||||||
@PostMapping("/v{version}/files/chunk")
|
@PostMapping("/v{version}/files/chunk")
|
||||||
public ResponseEntity<BaseResponse> uploadChunk(
|
public ResponseEntity<BaseResponse> uploadChunk(
|
||||||
@PathVariable("version") int version,
|
@PathVariable("version") int version,
|
||||||
@RequestParam("upload_id") String uploadId,
|
@RequestParam(value = "upload_id", required = false) String uploadId,
|
||||||
@RequestParam("chunk_number") Integer chunkNumber,
|
@RequestParam(value = "chunk_number", required = false) Integer chunkNumber,
|
||||||
@RequestParam("chunk") MultipartFile chunk) {
|
@RequestParam(value = "chunk", required = false) MultipartFile chunk) {
|
||||||
|
try {
|
||||||
log.info("Uploading chunk {} for session {}, file size: {} bytes, version: {}",
|
if (chunk == null || chunk.isEmpty()) {
|
||||||
chunkNumber, uploadId, chunk.getSize(), version);
|
|
||||||
|
|
||||||
if (chunk.isEmpty()) {
|
|
||||||
return ResponseEntity.ok().body(new BaseResponse(20004, MessageCode.FILE_UPLOAD_ERROR.getCode(),
|
return ResponseEntity.ok().body(new BaseResponse(20004, MessageCode.FILE_UPLOAD_ERROR.getCode(),
|
||||||
"Chunk file is empty", null));
|
"Chunk file null or empty", ChunkUploadResponse.builder()
|
||||||
|
.uploadId(uploadId)
|
||||||
|
.chunkNumber(chunkNumber)
|
||||||
|
.build()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (uploadId == null || uploadId.isBlank()) {
|
if (uploadId == null || uploadId.isBlank()) {
|
||||||
return ResponseEntity.ok().body(new BaseResponse(20004, MessageCode.FILE_UPLOAD_ERROR.getCode(),
|
return ResponseEntity.ok().body(new BaseResponse(20004, MessageCode.FILE_UPLOAD_ERROR.getCode(),
|
||||||
"Upload ID is required", null));
|
"Upload ID is required", ChunkUploadResponse.builder()
|
||||||
|
.uploadId(uploadId)
|
||||||
|
.chunkNumber(chunkNumber)
|
||||||
|
.build()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chunkNumber == null || chunkNumber < 0) {
|
if (chunkNumber == null || chunkNumber < 0) {
|
||||||
return ResponseEntity.ok().body(new BaseResponse(20004, MessageCode.FILE_UPLOAD_ERROR.getCode(),
|
return ResponseEntity.ok().body(new BaseResponse(20004, MessageCode.FILE_UPLOAD_ERROR.getCode(),
|
||||||
"Valid chunk number is required", null));
|
"Valid chunk number is required", ChunkUploadResponse.builder()
|
||||||
|
.uploadId(uploadId)
|
||||||
|
.chunkNumber(chunkNumber)
|
||||||
|
.build()));
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
|
||||||
fileUploadService.uploadChunk(uploadId, chunkNumber, chunk);
|
fileUploadService.uploadChunk(uploadId, chunkNumber, chunk);
|
||||||
|
|
||||||
ChunkUploadResponse responseBody = ChunkUploadResponse.builder()
|
ChunkUploadResponse responseBody = ChunkUploadResponse.builder()
|
||||||
|
|||||||
@@ -145,7 +145,7 @@ public class FileUploadServiceImpl implements FileUploadService {
|
|||||||
|
|
||||||
if (chunkNumber < 0 || chunkNumber >= session.getTotalChunks()) {
|
if (chunkNumber < 0 || chunkNumber >= session.getTotalChunks()) {
|
||||||
throw new FileUploadException(
|
throw new FileUploadException(
|
||||||
String.format("Invalid chunk number %d. Expected 0-%d",
|
String.format("Invalid chunk number %d. Expected number: %d",
|
||||||
chunkNumber, session.getTotalChunks() - 1));
|
chunkNumber, session.getTotalChunks() - 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user