Przesłanie pliku(zdjęcia) do serwera (JSON)

0

Chcę przesłać zdjęcie do serwera za pomocą JSONa robię to tak:

	
$scope.uploadFile = function(files) {
    var fd = new FormData();
    //Take the first selected file
    fd.append("file", files[0]);
    
    $http.post('rest/...', fd, {
        withCredentials: true,
        headers: {'Content-Type': 'application/json' },
        transformRequest: angular.identity
    }).success(  ).error( );

};

Na serwerze:

@POST
        @Path("/recievePhoto")
        @Consumes(MediaType.APPLICATION_JSON)
        public void getPhoto(String photo) throws IOException{
            
            byte[] imageDataBytes = Base64.encode(photo);
            File myFile = new File(System.getProperty("catalina.base"), "photo.jpg");  
            myFile.createNewFile();
        try {
	  
	    FileOutputStream fileOuputStream =  new FileOutputStream(myFile); 
	    fileOuputStream.write(imageDataBytes);
	    fileOuputStream.close();
	       
	    System.out.println("Done");
        }catch(Exception e){
            e.printStackTrace();
        }
        }

Wszystko niby spoko plik jest tworzony ale nie mogę go otworzyć bo pisze, że jest uszkodzony. To Base64 jest z com.​sun.​jersey.​core.​util.
Jak to powinienem poprawnie zrobić? Można to jakiś zrobić za pomocą ObjectMappera?
Chciałbym przesyłać pliki jpg oraz png.

0

Czym jest obiekt FormData i skod pewność, że reprezentuje on jeden plik w postaci Base64

0

Na początek byte[] imageDataBytes = Base64.encode(photo); powinno być chyba decode, bo przesyłasz dane zakodowane w base64, a by je obrobić musisz je zdekodować. Po drugie zapnij się debuggerem do tego kontrolera i sprawdź co dokładnie zapodaje angular. Coś mi mówi (choć mało prawdopodobne, bo to babol by był), że dostajesz:

{
    "file":"base64EncodedString=="
}

co wymaga wyciągnięcia informacji z JSONa po stronie serwera....

0

Odkopuję bo nie miałem czasu wcześniej nad tym przysiąść. Faktycznie powinno być .decode ale gdy tak zrobię wywala się błąd. Zmienna photo przekazana do tej metody wygląda tak mniej więcej:

------WebKitFormBoundaryAWTCDMyNkXreBSQA
Content-Disposition: form-data; name="file"; filename="501px-Emil_Karewicz-WP38.jpg"
Content-Type: image/jpeg

����.........
......
.....
��
����������
------WebKitFormBoundaryAWTCDMyNkXreBSQA--

(kopki to ominięcie sporej częsci zakodowanych znaków)

Nie mogę sobie poradzić z tym uploadem przez jsona. Potrzebuje wrzucać pliki graficzne - robił ktoś coś takiego i ma wiedzę do podzielenia się?:)

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