客戶端迴圈上傳多張圖,服務端只收到最後一張 (或所有請求寫入同一檔案)。
服務端儲存邏輯使用**固定檔名** (如 upload.jpg) 或**未包含唯一標識**的命名規則,導致後續請求覆蓋前一個檔案。
// Android
String fileName = System.currentTimeMillis() + "_" + UUID.randomUUID().toString().substring(0,8) + ".jpg";
request.addParameter("fileName", fileName);
服務端直接使用該檔名儲存。
// Spring MVC
@PostMapping("/upload")
public ResponseEntity> upload(@RequestParam MultipartFile file) {
String ext = FilenameUtils.getExtension(file.getOriginalFilename());
String storedName = UUID.randomUUID().toString().replace("-", "") + "." + ext;
Path dest = uploadRoot.resolve(storedName);
file.transferTo(dest);
// 回傳 storedName 供客戶端關聯業務
return ResponseEntity.ok(Collections.singletonMap("storedName", storedName));
}
CREATE TABLE uploads (
id BIGSERIAL PK,
original_name VARCHAR(255),
stored_name VARCHAR(64) UNIQUE,
uploader_id BIGINT,
created_at TIMESTAMP DEFAULT NOW()
);