Danke fürs Lesen.
Ich bin neu in iOS und versuche, ein Bild und einen Text mit multi-part form encoding
iOS hochzuladen .
Das curl
Äquivalent ist ungefähr so:curl -F "param1=value1" -F "[email protected]" "http://some.ip.address:5000/upload"
Der curl
obige Befehl gibt die erwartete korrekte Antwort in zurückJSON.
Problem: Ich erhalte immer wieder eine HTTP 400-Anfrage, was bedeutet, dass ich beim Erstellen des HTTP-POST-Körpers etwas falsch mache.
Was ich getan habe: Als Referenz habe ich die Flickr API iOS App "POST Größe zu groß!" und Ziel C: Wie lade ich Bild und Text mit HTTP POST hoch? . Aber ich bekomme immer wieder ein HTTP 400.
Ich habe das versucht ASIHttpRequest
, hatte dort aber ein anderes Problem (der Rückruf wurde nie angerufen). Ich habe dies jedoch nicht weiter untersucht, da ich gehört habe, dass der Entwickler die Bibliothek nicht mehr unterstützt: http://allseeing-i.com/[request_release] ;
Könnte mir bitte jemand helfen?
quelle
Antworten:
Hier ist Code aus meiner App, um ein Bild auf unserem Webserver zu veröffentlichen:
quelle
Die Antwort von XJones wirkte wie ein Zauber.
Aber er hat nicht erwähnt / deklarierten Variablen
_params
,BoundaryConstant
undrequestURL
. Also dachte ich daran, diesen Teil als Add-On zu seinem Beitrag zu veröffentlichen, damit er in Zukunft anderen helfen kann.Wie ich bereits erwähnt habe, ist dies keine Antwort für sich, sondern nur ein Addon zu XJones ' Post.
quelle
Für http post Bild und Benutzername und Passwort senden über post Methode
quelle
Verwenden Sie AFNetworking. Fügen Sie andere Parameter in das Parameterwörterbuch ein und hängen Sie die Bilddaten in Formulardaten an.
quelle
Hier ist meine ähnliche Netzwerkkit-Bibliothek zum Hochladen von Dateien als mehrteilige Form:
Verwenden Sie den Delegaten um über den Upload des Fortschritts zu benachrichtigen.
Verwenden Sie den Benachrichtigungsnamen um zu benachrichtigen, wenn die Anforderung abgeschlossen ist.
Verwenden Sie die Warteschlange, um diese Anforderung in Ihre Betriebswarteschlange aufzunehmen, damit sie zum richtigen Zeitpunkt verarbeitet wird.
quelle
Hier ist eine Swift-Version. Beachten Sie, dass es immer noch wichtig ist, die leere Formulargrenze zu senden, wenn Sie keine Formulardaten senden möchten. Insbesondere Flask erwartet Formulardaten, gefolgt von Dateidaten, und wird nicht
request.files
ohne die erste Grenze gefüllt.quelle
Hier ist der funktionierende schnelle Code, der aus dem von @xjones bereitgestellten Code übersetzt wurde. Vielen Dank für Ihre Hilfe Kumpel. Deiner war der einzige Weg, der für mich funktioniert hat. Ich habe diese Methode verwendet, um 1 Bild und einen weiteren Parameter an einen in asp.net erstellten Webservice zu senden
quelle
Laden Sie das Bild mit den Formulardaten hoch NSURLConnection- Klasse in Swift 2.2 hoch :
Hinweis: Verwenden Sie immer die
sendAsynchronousRequest
Methode anstelle vonsendSynchronousRequest
Hochladens / Herunterladens von Daten, um ein Blockieren des Hauptthreads zu vermeiden. Hier habe ich sendSynchronousRequest nur zu Testzwecken verwendet.quelle
Ich kann Ihnen ein Beispiel für das Hochladen einer TXT- Datei auf einen Server mit
NSMutableURLRequest
undNSURLSessionUploadTask
mithilfe eines PHP- Skripts zeigen.PHP-Skript
quelle
quelle