小编ham*_*med的帖子

Spring boot中分块上传大文件的最佳实践

我有一个大文件,我想将其上传到服务器端。当发生任何问题(例如互联网中断或断电...)时,如果我重试上传,从简历上传的文件并且不需要从头开始发送文件,这一点非常重要。

我尝试使用这种方法发送文件,但这似乎不是一个好方法,因为直接在响应实体中发送块(字节数组),这不是一个好主意。

不管怎样,如果有人可以开发这种方法并使该代码成为具有更好性能的更好代码,我对此表示赞赏。有人知道这样做的 最佳实践方法吗?

如果你喜欢我的代码,请投票给我,谢谢:)

休息控制器

@RestController
@RequestMapping("/files")
public class Controller {

@Autowired
private MyService service;

@PutMapping("/upload/resume")
public Mono<ResponseEntity> uploadWithResume(@RequestPart("chunk")byte[] chunk,
                                             @RequestPart("fileName")String fileName,
                                             @RequestParam("length")Long length
) throws ParseException {
    try {
        return service.fileResumeUpload(chunk, fileName, length);
    } catch (IOException e) {
        e.printStackTrace();
        return Mono.just(ResponseEntity.status(HttpStatus.PERMANENT_REDIRECT).build());
    }
}

@RequestMapping(value = "/get/uploaded/size", method = RequestMethod.HEAD)
public Mono<ResponseEntity> getUploadedSize(@RequestParam("fileName") String fileName) throws IOException {
    if (Files.exists(Paths.get("src/main/resources/" + fileName))) {

        String size = String.valueOf(Files.size(Paths.get("src/main/resources/" + fileName)));

        return Mono.just(ResponseEntity.ok()
                .header("upload-offset", size)
                .build());
    } …
Run Code Online (Sandbox Code Playgroud)

java file-upload backend chunks spring-boot

6
推荐指数
0
解决办法
1万
查看次数

标签 统计

backend ×1

chunks ×1

file-upload ×1

java ×1

spring-boot ×1