Zwracanie pliku w springu

Zwracanie pliku w springu
T1
  • Rejestracja:ponad rok
  • Ostatnio:ponad rok
  • Postów:1
0

Hej

Mam taki kod, który generuje JSON z różnymi danymi i potem pozwala go pobrać przez API

Service:

Kopiuj
public File getJsonFile() {
    // utworzenie pewnego JSON'a

    File jsonFile = new File("file.json");

    try (FileWriter fileWriter = new FileWriter(jsonFile)) {
        fileWriter.write(objectMapper.writeValueAsString(json));   // objectMapper z Jackson
    } catch (IOException e) {
        throw new RuntimeException(e);
    }

    return jsonFile;
}

Controller:

Kopiuj
@GetMapping
ResponseEntity<Resource> getJsonFile() throws FileNotFoundException {
    File file = service.getJsonFile();
    String header = String.format("attachment; filename=%s", file.getName());

    return ResponseEntity.ok()
        .header(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, HttpHeaders.CONTENT_DISPOSITION)
        .header(HttpHeaders.CONTENT_DISPOSITION, header)
        .contentLength(file.length())
        .contentType(MediaType.APPLICATION_JSON)
        .body(new InputStreamResource(new FileInputStream(file)));
}

Czy taki kod jest wydajny? Jak zrobić, żeby nie tworzyło mi pliku przy pobieraniu jsona?

edytowany 2x, ostatnio: test132
RequiredNickname
  • Rejestracja:prawie 5 lat
  • Ostatnio:około 3 godziny
  • Postów:620
0

https://stackoverflow.com/questions/8597646/java-servlet-and-io-create-a-file-without-saving-to-disk-and-sending-it-to-the

Czy jest wydajny? Nie wiem ale to imho najmniejszy potencjalny problem tego kodu.

PI
  • Rejestracja:ponad 9 lat
  • Ostatnio:4 miesiące
  • Postów:2787
1

Działaj raczej na Inputstream lub byte[], a nie na File.

OL
  • Rejestracja:prawie 5 lat
  • Ostatnio:5 miesięcy
  • Postów:28
0

Jak się nie wie, że można pracować na "plikach" w pamięci jako tablice bajtów to potem powstają takie cuda. Sam to przerabiałem. Mocno się zdziwiłem jak odkryłem, że można pobrać plik z neta i obrobić go w locie.

RequiredNickname
a potem outOfMemoryException :P
OL

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.