Hochladen der Datei mit Parametern mit Alamofire
Ich bin versucht, eine Datei hochzuladen, mit Alamofire
. Der upload funktioniert problemlos, wenn die Verwendung einer Datei (NSUrl
), aber ich kann nicht scheinen, um herauszufinden, wie die NSData
option?
Dies ist, was ich habe als test:
var url:NSURL = NSURL.URLWithString("http://localhost:8080/bike.jpeg")
var err: NSError?
var imageData :NSData = NSData.dataWithContentsOfURL(url,options: NSDataReadingOptions.DataReadingMappedIfSafe, error: &err)
Alamofire.upload(.POST, "http://localhost:8080/rest/service/upload/test.png", imageData)
.progress { (bytesWritten, totalBytesWritten, totalBytesExpectedToWrite) in
println(totalBytesWritten)
}
.responseJSON { (request, response, JSON, error) in
println(request)
println(response)
println(JSON)
}
Ich bin immer ein Statuscode 415?
Ebenfalls, wie kann ich senden über zusätzliche Parameter in der upload?
Dank
BEARBEITEN
Ich war nicht die Einstellung des richtigen Content-Type:
var manager = Manager.sharedInstance
manager.session.configuration.HTTPAdditionalHeaders = ["Content-Type": "application/octet-stream"]
let imageData: NSMutableData = NSMutableData.dataWithData(UIImageJPEGRepresentation(imageTest.image, 30));
Alamofire.upload(.POST, "http://localhost:8080/rest/service/upload?attachmentName=file.jpg", imageData)
.progress { (bytesWritten, totalBytesWritten, totalBytesExpectedToWrite) in
println(totalBytesWritten)
}
.responseString { (request, response, JSON, error) in
println(request)
println(response)
println(JSON)
}
Kann immer noch nicht herausfinden, wie zu senden Sie zusätzliche Parameter zusammen mit dem upload.
Kommentar zu dem Problem
Verwenden Sie "multipartFormData.appendBodyPart(Daten: image1Data, name: "file", mit dem Namen: "myImage.png", mimeType: "image/png")" dies ist der imp sonst die Fehlermeldung "Ungültiger Wert Zeichen 0"
InformationsquelleAutor der Frage user3432352 | 2014-09-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist eine einfache Funktion, die erfordert, dass die Ziel-upload-url, Parameter und Bilddaten und gibt die URLRequestConvertible und NSData, dass Alamofire.upload erfordert, um ein Bild hochzuladen mit Parametern.
Hier ist ein Beispiel, wie es zu benutzen (siehe ERSTELLEN UND SENDEN ANFRAGE):
Und wenn Sie die php-Datei für die Ziel-url (mit einem "uploads" Ordner im selben Verzeichnis):
InformationsquelleAutor der Antwort antiblank
Foto hochladen /Datei mit Parameter und benutzerdefinierte Header über Swift 3 & 4 und Alamofire 4
über Swift 2 und Alamofire 3
InformationsquelleAutor der Antwort fatihyildizhan
Hier ist eine Lösung mit Alamofire 3.0 basiert auf antiblanks Antwort:
InformationsquelleAutor der Antwort EdFunke
Verbesserung EdFunke Antwort für Swift 2.2 Alamofire 3.3.1
InformationsquelleAutor der Antwort n.by.n
Multipart-upload ist geplant, mit dem nächsten (1.3.0) Freisetzung von Alamofire.
In der Zwischenzeit, mit Hilfe der Informationen in diesem thread, habe ich eine Klasse, die vereinfacht das hochladen von Dateien und die Einbeziehung zusätzlicher Parameter ("normale "Eingänge") in der Anfrage zusammen mit einer oder mehreren Dateien.
Ohne die Annahme, dass Dateien eines bestimmten Typs oder die Nutzung von Routern.
FileUploader.swift:
Wäre es z.B. so verwendet werden:
Check it out oder download von diesem gist: https://gist.github.com/ncerezo/b1991f8dfac01cb162c0
InformationsquelleAutor der Antwort ncerezo
Den code in @antiblank die Antwort war nicht für mich arbeiten. Ich habe ein paar änderungen vorgenommen und es funktioniert nun:
VERWENDEN:
Den NetData von https://github.com/nghialv/Net/blob/master/Net/NetData.swift
upload.php Code:
InformationsquelleAutor der Antwort Vincent Yan
Kürzere version, basierend auf @antiblank und @VincentYan Antworten.
Klasse
Nutzung
InformationsquelleAutor der Antwort Tom
Zwar gibt es andere Antworten, die beraten, wie Sie manuell zu konstruieren, multipart-Anfragen, können Sie nur wollen stick mit AFNetworking. Auch wenn es in Objective-C geschrieben, können Sie immer noch verwenden es in Ihren Swift-Projekte (siehe Swift und Objective-C im Selben Projekt). Eh, das Swift-code zum senden einer mehrteiligen Anforderung mit AFNetworking ist wie folgt:
Xcode lästige Probleme hat, dies zu erkennen
id<AFMultipartFormData>
parameterformData
, so dass Sie nicht genießen Sie die typische editor code-Vervollständigung desappendPartWithFileData
- Methode oder die Parameter, aber wenn Sie Sie kompilieren und führen Sie es aus, es funktioniert gut.InformationsquelleAutor der Antwort Rob
Bekommen Sie 415, da fehlt die content-type in Ihrer Anfrage.
Unten ist eine totale soution zum Bild-upload auf Swift 2 und AlamoFire
InformationsquelleAutor der Antwort Chamath Jeevan
Unten sind swift und Php-Code
Swift-code -> Apple Swift version 3.0.1 (swiftlang-800.0.58.6 clang-800.0.42.1)
Target: x86_64-apple-macosx10.9
PHP-Code, um Parameter und Datei
Hier Parameter Handle in $_Request
Und Dateien verarbeitet werden, die in $_File
Format in $_File Daten(Array , Wörterbuch oder String ) wird davon abhängen, auf Anfrage im swift-Seite , Hier Finden Sie diese Zeile im code
in der Php-Seite der Zuordnung Zuname: "imgFiles[]" gibt den array-Namen, format , Typ
ZB
PHP-Code
InformationsquelleAutor der Antwort Vijayvir Sing Pantlia
Nahm ich antiblank Antwort und verpackt dies alles in 1 Funktion mit Abschluss-handler. Dachte, es könnte nützlich sein, jemand zu finden. Es ist etwas 'rauher', dann antiblank die Antwort, da bin ich einfach unter einen string Antwort von der PHP-Datei (nicht als JSON).
Hier ist, wie Sie es nennen:
Hier ist die Funktion selbst:
Und hier ist der php-Datei.
InformationsquelleAutor der Antwort guido