Upload image with multipart form-data iOS in Swift

前端 未结 7 1004
無奈伤痛
無奈伤痛 2020-11-27 13:08

i am having a problem with uploading image with multipart-form

here is my code i used from this answer

    var request = NSMutableURLRequest(URL: url         


        
相关标签:
7条回答
  • 2020-11-27 14:04
    public func UPLOADIMG(url: String,parameters: Dictionary<String,AnyObject>?,filename:String,image:UIImage, success:((NSDictionary) -> Void)!, failed:((NSDictionary) -> Void)!, errord:((NSError) -> Void)!) {
            var TWITTERFON_FORM_BOUNDARY:String = "AaB03x"
            let url = NSURL(string: url)!
            var request:NSMutableURLRequest = NSMutableURLRequest(URL: url, cachePolicy: NSURLRequestCachePolicy.ReloadIgnoringLocalCacheData, timeoutInterval: 10)
            var MPboundary:String = "--\(TWITTERFON_FORM_BOUNDARY)"
            var endMPboundary:String = "\(MPboundary)--"
            //convert UIImage to NSData            
            var data:NSData = UIImagePNGRepresentation(image)
            var body:NSMutableString = NSMutableString();
            // with other params
            if parameters != nil {
                for (key, value) in parameters! {
                    body.appendFormat("\(MPboundary)\r\n")
                    body.appendFormat("Content-Disposition: form-data; name=\"\(key)\"\r\n\r\n")
                    body.appendFormat("\(value)\r\n")
                }
            }
            // set upload image, name is the key of image 
            body.appendFormat("%@\r\n",MPboundary)
            body.appendFormat("Content-Disposition: form-data; name=\"\(filename)\"; filename=\"pen111.png\"\r\n")
            body.appendFormat("Content-Type: image/png\r\n\r\n")
            var end:String = "\r\n\(endMPboundary)"
            var myRequestData:NSMutableData = NSMutableData();
            myRequestData.appendData(body.dataUsingEncoding(NSUTF8StringEncoding)!)
            myRequestData.appendData(data)
            myRequestData.appendData(end.dataUsingEncoding(NSUTF8StringEncoding)!)
            var content:String = "multipart/form-data; boundary=\(TWITTERFON_FORM_BOUNDARY)"
            request.setValue(content, forHTTPHeaderField: "Content-Type")
            request.setValue("\(myRequestData.length)", forHTTPHeaderField: "Content-Length")
            request.HTTPBody = myRequestData
            request.HTTPMethod = "POST"
            //        var conn:NSURLConnection = NSURLConnection(request: request, delegate: self)!
            let task = NSURLSession.sharedSession().dataTaskWithRequest(request, completionHandler: {
                data, response, error in
                if error != nil {
                    println(error)
                    errord(error)
                    return
                }
                var parseError: NSError?
                let responseObject: AnyObject? = NSJSONSerialization.JSONObjectWithData(data, options: nil, error: &parseError)
                if let responseDictionary = responseObject as? NSDictionary {
                    success(responseDictionary)
                } else {
                }
    
            })
            task.resume()
    
    }
    
    0 讨论(0)
提交回复
热议问题