swift3 - 使用 Alamofire 将图像上传到服务器

标签 swift3 alamofire

这是我想使用 Alamofire 将图像上传到服务器的代码,它不是错误,但它无法将图像推送到服务器。我该怎么办?

let url = URL(string: urlString)!
var urlRequest = URLRequest(url: url)
urlRequest.httpMethod = "POST"

let parameters = ["name": rname]

do {
    urlRequest.httpBody = try JSONSerialization.data(withJSONObject: parameters, options: [])
} catch {
    print(error)
}

urlRequest.setValue("application/json", forHTTPHeaderField: "Content-Type")
    let image = UIImage.init(named: "myImage")
    let imgData = UIImageJPEGRepresentation(image!, 0.2)!


Alamofire.upload(multipartFormData: { MultipartFormData in

        MultipartFormData.append(imgData, withName: "fileset", fileName: "name", mimeType: "image/jpg")


    },with: urlRequest,encodingCompletion: { encodingResult in

        switch encodingResult {

        case .success(let upload, _, _):

            upload.responseJSON { response in

                if let info = response.result.value as? Dictionary<String, AnyObject> {

                    if let links = info["links"] as? Dictionary<String, AnyObject> {

                        if let imgLink = links["image_link"] as? String {
                            print("LINK: \(imgLink)")
                        }
                    }
                }

            } case .failure(let error):
                print(error)
        }
    })

最佳答案

试试下面的代码

 let image = UIImage.init(named: "myImage")
 let imgData = UIImageJPEGRepresentation(image!, 0.2)!

 let parameters = ["name": rname] //Optional for extra parameter

Alamofire.upload(multipartFormData: { multipartFormData in
        multipartFormData.append(imgData, withName: "fileset",fileName: "file.jpg", mimeType: "image/jpg")
        for (key, value) in parameters {
                multipartFormData.append(value.data(using: String.Encoding.utf8)!, withName: key)
            } //Optional for extra parameters
    },
to:"mysite/upload.php")
{ (result) in
    switch result {
    case .success(let upload, _, _):

        upload.uploadProgress(closure: { (progress) in
            print("Upload Progress: \(progress.fractionCompleted)")
        })

        upload.responseJSON { response in
             print(response.result.value)  
        }

    case .failure(let encodingError):
        print(encodingError)  
    }
}

关于swift3 - 使用 Alamofire 将图像上传到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40519829/

相关文章:

ios - UISearchController更新搜索结果问题

swift - Alamofire 3.0 请求

swift - Alamofire,对象映射器, Realm : Delete orphaned objects

swift - 将视频(和属性)上传到 vimeo 的 RESTful 机制

ios - 如何将 swiftyJSON dictionaryValue 用作 UILabel 的可用字符串?

ios - 在核心数据中保存一对多关系,但关闭模拟器后关系中只有一项。控制台 Swift 中的错误

ios - UITapGestureRecognizer 不适用于 Swift 3.0

ios - Swift:自动换行不起作用?即使设置

ios - 如何在编译时基于 ios 版本以 swift 代码导入类(不在 Xcode 中设置标志或使用弱链接)?

nsurlsession - 在 Alamofire 中使用 backgroundCompletionHandler 的正确方法是什么?