ios Upload Image and Text using HTTP POST

后端 未结 10 2088
执笔经年
执笔经年 2020-11-22 08:27

Thanks for reading.

I am new to iOS and I am trying to upload an Image and a text using multi-part form encoding in iOS.

The curl

10条回答
  •  日久生厌
    2020-11-22 09:08

    Upload image with form data using NSURLConnection class in Swift 2.2:

        func uploadImage(){
            let imageData = UIImagePNGRepresentation(UIImage(named: "dexter.jpg")!)
    
            if imageData != nil{
                let str = "https://staging.mywebsite.com/V2.9/uploadfile"
                let request = NSMutableURLRequest(URL: NSURL(string:str)!)
                request.HTTPMethod = "POST"
    
                let boundary = NSString(format: "---------------------------14737809831466499882746641449")
    
                let contentType = NSString(format: "multipart/form-data; boundary=%@",boundary)
                request.addValue(contentType as String, forHTTPHeaderField: "Content-Type")
    
                let body = NSMutableData()
    
                // append image data to body
                body.appendData(NSString(format: "\r\n--%@\r\n", boundary).dataUsingEncoding(NSUTF8StringEncoding)!)
                body.appendData(NSString(format:"Content-Disposition: form-data; name=\"file\"; filename=\"img.jpg\"\\r\n").dataUsingEncoding(NSUTF8StringEncoding)!)
                body.appendData(NSString(format: "Content-Type: application/octet-stream\r\n\r\n").dataUsingEncoding(NSUTF8StringEncoding)!)
                body.appendData(imageData!)
                body.appendData(NSString(format: "\r\n--%@\r\n", boundary).dataUsingEncoding(NSUTF8StringEncoding)!)
    
                request.HTTPBody = body
    
                do {
                    let returnData = try NSURLConnection.sendSynchronousRequest(request, returningResponse: nil)
                    let returnString = NSString(data: returnData, encoding: NSUTF8StringEncoding)
                    print("returnString = \(returnString!)")
                }
                catch let  error as NSError {
                    print(error.description)
                }
            }
        }
    

    Note: Always use sendAsynchronousRequest method instead of sendSynchronousRequest for uploading/downloading data to avoid blocking main thread. Here I used sendSynchronousRequest for testing purpose only.

提交回复
热议问题