Base64-Upload von Android / Java zu RoR Carrierwave

7

Ich habe die Lösung von base64 image mit Carrierwave hinzugefügt , um sie hochzuladen ein Bild von einer Java-Klasse. So sieht nun meine FileUploader-Klasse aus - und ich glaube, wo das Problem liegt:

%Vor%

Das Bildmodell:

%Vor%

Gerade jetzt, wenn der Post-Aufruf gemacht wird, ist der Dateipfad, der in der db gespeichert ist, gleich Null - aber alles andere ist gespeichert. Hier ist die Java / Android-Klasse:

%Vor%

Hat jemand Ideen? Ich war den ganzen Tag dran. Ich denke, weil ich nicht viel über Ruby weiß, bin ich entweder (1) Missbildung der Anfrage; oder (2) Ich habe das base64-Image mit Carrierwave falsch implementiert.

    
TomJ 24.03.2012, 19:43
quelle

1 Antwort

19

Endlich hat das Problem gelöst! Ich hoffe, diese Antwort hilft anderen, die versuchen, dieses Problem zu lösen, da es keine gute Ressource dafür gibt. Das war überraschend, da ich dachte, andere hätten das Gleiche tun wollen. Meine ursprünglichen Änderungen an der Carrierwave-Initialisierungsdatei scheinen eine Sackgasse gewesen zu sein.

Es ging darum, das hochgeladene Bildobjekt im Controller zu erstellen und es dann wieder in die Parameter einzufügen.

In diesem Beispiel nehmen wir eine base64-Datei (die vermutlich JSON nicht unterstützt) und speichern sie als temporäre Datei im System. Dann erstellen wir dieses UploadedFile-Objekt und führen es schließlich erneut ein es in die params.

Wie mein JSON / params aussieht:

%Vor%

So sieht mein Controller jetzt aus:

%Vor%

Jetzt müssen Sie nur noch die temporäre Datei löschen, was mit tempfile.delete

möglich ist

Ich hoffe, das hilft bei Ihrer Frage! Ich habe gestern den ganzen Tag nach einer Lösung gesucht und alles, was ich gesehen habe, ist eine Sackgasse. Dies funktioniert jedoch bei meinen Testfällen.

    
TomJ 25.03.2012, 14:47
quelle