ios Upload Image and Text using HTTP POST

后端 未结 10 2175
执笔经年
执笔经年 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 08:50

    here's the working swift code translated from the code provided by @xjones. Thanks alot for your help mate. Yours was the only way that worked for me. I used this method to send 1 image and a another parameter to a webservice made in asp.net


                        let params = NSMutableDictionary()
    
                        let boundaryConstant  = "----------V2y2HFg03eptjbaKO0j1"
    
                        let file1ParamConstant = "file1"
                        params.setObject(device_id!, forKey: "deviceID")
    
                        let requestUrl = NSURL(string: "\(siteurl):\(port)/FileUpload/Upload")
    
                        let request = NSMutableURLRequest()
    
                        request.cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringLocalCacheData
                        request.HTTPShouldHandleCookies=false
                        request.timeoutInterval = 30
                        request.HTTPMethod = "POST"
    
                        let contentType = "multipart/form-data; boundary=\(boundaryConstant)"
    
                        request.setValue(contentType, forHTTPHeaderField: "Content-Type")
    
                        let body = NSMutableData()
    
                        // parameters
    
                        for param in params {
    
                        body.appendData("--\(boundaryConstant)\r\n" .dataUsingEncoding(NSUTF8StringEncoding)! )
                        body.appendData("Content-Disposition: form-data; name=\"\(param)\"\r\n\r\n" .dataUsingEncoding(NSUTF8StringEncoding)!)
                        body.appendData("\(param.value)\r\n" .dataUsingEncoding(NSUTF8StringEncoding)!)
    
                        }
                        // images
    
                        // image begin
                        body.appendData("--\(boundaryConstant)\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
    
                        body.appendData("Content-Disposition: form-data; name=\"\(file1ParamConstant)\"; filename=\"image.jpg\"\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
                        body.appendData("Content-Type: image/jpeg\r\n\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
    
                        body.appendData(passportImageData)
                        body.appendData("\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
    
                        // image end
    
    
    
                        body.appendData("--\(boundaryConstant)--\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
    
                        request.HTTPBody  = body
                        let postLength = "\(body.length)"
                        request.setValue(postLength, forHTTPHeaderField: "Content-Length")
                        request.URL = requestUrl
    
                        var serverResponse = NSString()
    
                        let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
                            data, response, error in
    
                            if error != nil
                            {
                                print("error=\(error)")
                                return
                            }
    
    
                            print("response = \(response)")
    
    
                            let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding)
                            print("responseString = \(responseString!)")
                            serverResponse = responseString!
    
    
                            }
    
                                task.resume()
    

提交回复
热议问题