Added sample download rest resource

This commit is contained in:
Max W. 2024-02-04 22:55:56 +01:00
parent 689f0ea67e
commit 973ebb6e9d

View File

@ -2,20 +2,29 @@ package de.w665.sharepulse.rest;
import de.w665.sharepulse.db.repo.FileUploadRepository; import de.w665.sharepulse.db.repo.FileUploadRepository;
import de.w665.sharepulse.model.FileUpload; import de.w665.sharepulse.model.FileUpload;
import de.w665.sharepulse.service.FileService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.core.io.InputStreamResource;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.core.io.Resource;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.http.HttpHeaders;
import org.springframework.web.bind.annotation.RestController; import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
@RestController @RestController
public class TestRestResource extends ApiRestController { public class TestRestResource extends ApiRestController {
private final FileUploadRepository fileUploadRepository; private final FileUploadRepository fileUploadRepository;
private final FileService fileService;
@Autowired @Autowired
public TestRestResource(FileUploadRepository fileUploadRepository) { public TestRestResource(FileUploadRepository fileUploadRepository, FileService fileService) {
this.fileUploadRepository = fileUploadRepository; this.fileUploadRepository = fileUploadRepository;
this.fileService = fileService;
} }
@GetMapping("test") @GetMapping("test")
@ -23,4 +32,26 @@ public class TestRestResource extends ApiRestController {
FileUpload fileUpload = fileUploadRepository.retrieveFileUploadByFileId(id); FileUpload fileUpload = fileUploadRepository.retrieveFileUploadByFileId(id);
return fileUpload != null ? fileUpload.toString() : "FileUpload not found for id: " + id; return fileUpload != null ? fileUpload.toString() : "FileUpload not found for id: " + id;
} }
@GetMapping("test/download")
public ResponseEntity<Resource> download(@RequestParam String id) throws IOException {
File file = fileService.getFileById(id);
HttpHeaders headers = new HttpHeaders();
headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"edmbass.flac\"");
//headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + file.getName() + "\"");
headers.add(HttpHeaders.CACHE_CONTROL, "no-cache, no-store, must-revalidate");
headers.add(HttpHeaders.PRAGMA, "no-cache");
headers.add(HttpHeaders.EXPIRES, "0");
InputStreamResource resource = new InputStreamResource(new FileInputStream(file));
return ResponseEntity.ok()
.headers(headers)
.contentLength(file.length())
.contentType(MediaType.APPLICATION_OCTET_STREAM)
.body(resource);
}
} }