[英]Swift - multipart/form-data POST request(upload) with and without image
[英]SWIFT - POST image Upload
我一直在花費大量時間僅將圖像上傳到服務器(API調用)並獲得JSON響應。
我已經嘗試過使用curl了,它可以完美工作,但是無法在SWIFT中工作。
本質上,這就是我想要做的(但在SWIFT中):
curl -X POST -F "file=@test.png" http://www.myurl.com:8000/api
這是我的SWIFT函數,用於執行完全相同的Curl操作:
func sendImagePOST(myimage : UIImage!){
var imageData = UIImagePNGRepresentation(myimage)
//I have also tried this version UIImageJPEGRepresentation(myimage, 1.0)
if imageData != nil{
var session = NSURLSession.sharedSession()
var boundary = NSString(format: "---------------------------1940928093901861121640280121")
var contentType = NSString(format: "multipart/form-data; boundary=%@",boundary)
var request = NSMutableURLRequest(URL: NSURL(string:"http://www.myurl.com:8000/api")!)
request.HTTPMethod = "POST"
request.addValue(contentType, forHTTPHeaderField: "Content-Type")
var body = NSMutableData.alloc()
body.appendData(NSString(format: "\r\n--%@\r\n", boundary).dataUsingEncoding(NSUTF8StringEncoding)!)
body.appendData(NSString(format:"Content-Disposition: form-data; name=\"file\"; filename=\"pouria.png\"\r\n").dataUsingEncoding(NSUTF8StringEncoding)!)
body.appendData(NSString(format: "Content-Type: application/octet-stream\r\n\r\n").dataUsingEncoding(NSUTF8StringEncoding)!)
//i have also tired Content-Type:image/jpeg and Content-Type:image/png
body.appendData(imageData)
body.appendData(NSString(format: "\r\n--%@\r\n", boundary).dataUsingEncoding(NSUTF8StringEncoding)!)
request.HTTPBody = body
var error: NSError?
var returnData = NSURLConnection.sendSynchronousRequest(request, returningResponse: nil, error: &error)
var returnString = NSString(data: returnData!, encoding: NSUTF8StringEncoding)
println(returnString)
}
}
我不斷從服務器獲得400響應:
returnString Optional(<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>400 Bad Request</title>
<h1>Bad Request</h1>
<p>The browser (or proxy) sent a request that this server could not understand.</p>
)
我使用“ requestb.in”查看發布調用,並且Curl POST調用和SWIFT POST調用的標頭相同,但是正文內容不同(兩個調用使用相同的圖像)。
非常感謝您的幫助和時間,對此深表感謝。
就個人而言,我什至不會嘗試從頭開始編寫任何代碼,甚至無法在IOS上執行最基本的http操作。 我建議使用一個庫。 一個非常可靠的可以在這里找到: https : //github.com/AFNetworking/AFNetworking
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.