簡體   English   中英

SWIFT-POST圖片上傳

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM