Android: Retrofit 2 mehrere Datei-Upload-howto?

9

Das Hochladen eines einzelnen Bildes scheint mit Retrofit 2 kein Problem zu sein.

Allerdings Ich kann nicht herausfinden, wie man 2 Bilder gleichzeitig hochlädt.

falls die Dokumentation befolgt wurde: Ссылка

%Vor%

Schnittstelle:

%Vor%

dies gibt einen 'Upload: Erfolg', aber auf der Serverseite bekomme ich Kauderwelsch:

  

CONTENT_TYPE: multipart / form-data;   Grenze = 50fbfeb3-3abc-4f15-b130-cdcb7e3a0e4f

     

Inhalt Post: Array (       [Datei] = & gt; PNG IHDR L alotofbinarygibberish .... ... schnippeln       [Datei2] = & gt; PNG       IHDR L mehr binärer Kauderwelsch ...

kann mir jemand in die richtige Richtung zeigen?

einzelner Upload funktioniert, also ist das nicht das Problem, ich versuche, 2 oder mehr Bilder hochzuladen.

wenn ich es zu diesem ändern:

%Vor% %Vor%

Ich bekomme kein Kauderwelsch, aber nur das zweite Bild wird hochgeladen ...!?

AKTUALISIEREN

ich probierte das Retrofit (2.0 beta2) Multipart Datei-Upload funktioniert nicht Lösung, aber ein Fehler, dass @Body kann nicht mit Multipart verwendet werden: Java.lang.IllegalArgumentException: @Body-Parameter können nicht mit Formular- oder Multi-Part-Encoding verwendet werden. (Parameter # 1)

%Vor%

-

%Vor%     
dilux 13.01.2016, 22:24
quelle

3 Antworten

7

Das funktioniert:

%Vor%

-

%Vor%

-

Achtung: Beim Debuggen mit dem httpClient.interceptors () habe ich nur einen einzigen Upload gesehen, aber wenn ich den Endpunkt selbst überprüfe, um zu sehen, was er tatsächlich bekommen hat, hat er mehrere Uploads bekommen!

    
dilux 14.01.2016 14:51
quelle
2

Ich könnte zu spät kommen, aber meine Antwort könnte zukünftigen Besuchern helfen

Ich bitte den Benutzer, mehrere Bilder wie folgt auszuwählen:

%Vor%

Dann in onActivityResult() mache ich das:

%Vor%

Sie können FileUtils class von erhalten Github Link

Meine sendToServer() -Methode sieht folgendermaßen aus:

%Vor%

Schließlich sieht mein Retrofit-Endpunkt wie folgt aus:

%Vor%

Beachten Sie, dass YourResponse Ihre benutzerdefinierte Modellklasse für die Antwortbehandlung sein kann, oder Sie können root Response class verwenden, wenn Sie Ihre Modellklasse nicht erstellen möchten.

Hoffe das hilft neuen Besuchern.

    
rusted brain 01.06.2016 05:14
quelle
1

Versuchen Sie das

Für API:

%Vor%

Kunde

%Vor%

Der Anruf

%Vor%     
Pratik Vyas 24.03.2017 11:01
quelle