在Swift 2.0中从iOS应用程序上传图像到服务器



我正在开发一个iOS应用程序,在这个应用程序中,我必须将图像上传到服务器,我正在使用swift 2.0。下面是代码:

var tempImage:UIImage = info[UIImagePickerControllerOriginalImage] as!用户界面图像模板。image = tempImage

    print(tempImage)
    print([info])
    myImage.image = info[UIImagePickerControllerOriginalImage] as? UIImage
    self.dismissViewControllerAnimated(true, completion: nil)
    var imageData = UIImagePNGRepresentation(tempImage)
    // converting in base64
    let base64 = imageData?.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.Encoding64CharacterLineLength) as! AnyObject
    let url = NSURL(string: "www.google.com/myimage1/PNG")!
    let urlRequest = NSMutableURLRequest(URL: url)
    urlRequest.HTTPMethod = "POST"
    // Set the HTTP Body with the POST data
    let postDict = ["encodedImage": base64]
    urlRequest.HTTPBody = try! NSJSONSerialization.dataWithJSONObject(postDict , options: [])
    urlRequest.addValue("application/json", forHTTPHeaderField: "Content-Type")

    urlRequest.timeoutInterval = 600
    urlRequest.HTTPShouldHandleCookies = false
 //   urlRequest.setValue("application/json)", forHTTPHeaderField: "Content-Type")
    let task = NSURLSession.sharedSession().dataTaskWithRequest(urlRequest)
        {
          data, response, error in
            if error != nil {
            print("error=(error)")
            return
        }
        print("response = (response)")
        let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding)
        print("responseString = (responseString)")
    }
    task.resume()

但是我还没有成功。我仍然得到下面的错误响应。

error=Optional(error Domain=NSURLErrorDomain Code=-1001 "请求超时"。用户信息= {NSUnderlyingError = 0 x7fad5af61e20{错误域名=kCFErrorDomainCFNetwork代码=-1001 "(null)"用户信息= {_kCFStreamErrorCodeKey = 60, _kCFStreamErrorDomainKey = 1}},NSErrorFailingURLStringKey = www.google.com/myimage1/PNGNSErrorFailingURLKey = http://www.google.com/myimage1/PNG_kCFStreamErrorDomainKey=1, _kCFStreamErrorCodeKey=60, NSLocalizedDescription=请求超时})

请帮助我,如果你已经从你的应用程序在服务器上上传图像在swift 2.0。

你需要修改你的文件

info.plist

,并将其添加到应用程序TextEdit中,或使用xcode。

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
    </dict>
</dict>
从Xcode

https://i.stack.imgur.com/tGsEK.png

,别忘了清理项目。(cmd + shift + k)

func uploadImageOne()
{
    var imageData = UIImagePNGRepresentation(imageView.image)
    if imageData != nil{
        var request = NSMutableURLRequest(URL: NSURL(string:"= Enter your image URL")!)
        var session = NSURLSession.sharedSession()
        request.HTTPMethod = "POST"
        var boundary = NSString(format: "---------------------------14737809831466499882746641449")
        var contentType = NSString(format: "multipart/form-data; boundary=%@",boundary)
      //  println("Content Type (contentType)")
        request.addValue(contentType, forHTTPHeaderField: "Content-Type")
        var body = NSMutableData.alloc()
        // Title
         body.appendData(NSString(format: "rn--%@rn",boundary).dataUsingEncoding(NSUTF8StringEncoding)!)
        body.appendData(NSString(format:"Content-Disposition: form-data; name="title"rnrn").dataUsingEncoding(NSUTF8StringEncoding)!)
        body.appendData("Hello World".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)!)
        // Image
        body.appendData(NSString(format: "rn--%@rn", boundary).dataUsingEncoding(NSUTF8StringEncoding)!)
        body.appendData(NSString(format:"Content-Disposition: form-data; name="profile_img"; filename="img.jpg"\rn").dataUsingEncoding(NSUTF8StringEncoding)!)
        body.appendData(NSString(format: "Content-Type: application/octet-streamrnrn").dataUsingEncoding(NSUTF8StringEncoding)!)
        body.appendData(imageData)
        body.appendData(NSString(format: "rn--%@rn", boundary).dataUsingEncoding(NSUTF8StringEncoding)!)

        request.HTTPBody = body

        var returnData = NSURLConnection.sendSynchronousRequest(request, returningResponse: nil, error: nil)
        var returnString = NSString(data: returnData!, encoding: NSUTF8StringEncoding)
        println("returnString (returnString)")
    }

最新更新