【发布时间】:2018-04-23 09:28:45
【问题描述】:
我正在尝试使用 Swift 3 将图像上传到 iOS 中的服务器,我尝试使用 Alamofire 但它不起作用,所以我只是在这个论坛中搜索了另一个解决方案,但没有运气。
我发现一些答案说问题可能出在服务器端,但是,在 Android 上,图像上传正确。
这是我在 swift 3 中的上传功能:
func uploadImage(image: UIImage){
let imageData = UIImageJPEGRepresentation(image, 0.1)!
let session = URLSession(configuration: URLSessionConfiguration.default)
guard let url = URL(string: uploadPicUrl) /* your API url */) else { return }
var request = URLRequest(url: url)
request.httpMethod = "POST"
let boundary = "---------------------------14737809831466499882746641449"
let contentType = "multipart/form-data; boundary=\(boundary)"
request.addValue(contentType, forHTTPHeaderField: "Content-Type")
var body = Data()
body.append("--\(boundary)\r\n".data(using: String.Encoding.utf8)!)
body.append("Content-Disposition: form-data; name=\"userfile\"; filename=\"img.jpg\"\r\n".data(using: String.Encoding.utf8)!)
body.append("Content-Transfer-Encoding: binary\r\n\r\n".data(using: String.Encoding.utf8)!)
body.append(imageData)
body.append("\r\n".data(using: String.Encoding.utf8)!)
body.append("--\(boundary)--\r\n".data(using: String.Encoding.utf8)!)
request.httpBody = body
print("request", request.debugDescription)
print("body", body.debugDescription)
let dataTask = session.dataTask(with: request) { (data, response, error) in
if let error = error {
print("Something went wrong: \(error)")
}
if let response = response {
print("Response: \n \(response)")
}
}
dataTask.resume()
}
【问题讨论】:
-
试试这个Link。使用
Alamofire上传还检查您的 api 是否可以正常上传。 -
能否用错误日志更新您的问题?
-
这是我在 objc 中的答案,并且 100 % 工作,但你需要转换成 swift stackoverflow.com/a/48983133/4601900
标签: ios swift image-uploading