Przesyłanie dużej ilości zdjęć RESTem

0

Cześć,
pracuję nad stroną internetową, która będzie wyświetlała bardzo dużo zdjęć, będzie to galeria pokazująca zbiory kolekcjonerów. Użytkownik będzie mógł z poziomu weba dodawać zdjęcia do bazy danych. Zdjęcia wyświetlone w galerii będą dynamicznie pobierane z bazy danych i przesyłane jsonem itp. Na razie mam tak, że w bazie danych przetrzymuję zdjęcia jako BLOBy, bloby te wysyłane są w formacie base64 jako json i konwertowane na URL i wyświetlane na stronie internetowej. Zastanawiam się czy takie rozwiązanie jest prawidłowe? Przesyłane są jednak ogromne ciągi znaków, ale nie mam pomysłu na inne rozwiązanie. Chcialbym tylko się dowiedzieć czy idę w dobrym kierunku, a jak nie to prośba o jakąś podpowiedź.
Pozdrawiam

1

Możesz też użyć np. @Produces("image/png").
Jak już masz obrazek w tablicy bajtów wysłasz go np. w ten sposób:

    byte[] image = byteArrayOutputStream.toByteArray(); 
    return Response.ok(imageData).build();
1

A nie lepiej trzymać obrazki poza bazą i przesyłać tylko urle?

0

Połączyłem wasze pomysły, faktycznie lepiej będzie nie trzymać zdjęć jako bloby w bazie danych. Jedynie zostawię sobie ścieżkę do zdjęć żeby powiązać dodatkowe informacje.

Może się komuś przyda co mam:
Po stronie JS:

        blob : function(callback) {
              var xhr = new XMLHttpRequest();
              xhr.open('GET', "./bottlecaps/photo" , true);
              xhr.responseType = 'arraybuffer';

              xhr.onload = function(e) {
                if (this.status == 200) {
                  var blob = this.response;
                  if (callback) {
                    callback(blob);
                  }
                }
              };
              xhr.send();
            }

Potem to konwertuję na urla.

Po stronie Javy:

    @GET
    @Produces({"image/jpeg; charset=windows-1250"})
    @Path("photo")
    public Response getPhoto() {

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

        String mt = new MimetypesFileTypeMap().getContentType(file);
        return Response.ok(file, mt).build();

    }   

Dzięki i pozdrawiam.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0