【发布时间】:2017-10-10 07:39:56
【问题描述】:
这就是我尝试使用 Alamofire 上传图片的方式。但是程序崩溃说类似...'NSInvalidArgumentException', reason: '-[_SwiftTypePreservingNSNumber dataUsingEncoding:]: unrecognized selector sent to instance...我无法弄清楚确切的原因。这就是我提出请求的方式...
for i in 1...(imageArray.count) {
for img in imageArray {
let url = "http://myapp.com/a/images_upload"
let headers = [ "Content-Type":"application/x-www-form-urlencoded"]
let imageData: Data = (UIImageJPEGRepresentation(img, 0.6) as Data?)!
print(imageData)
let parameters: [String: Any] = [
"access_token": commonVarForAccessToken,
"seller_id": idForNewOldUser,
"product_id": self.productId,
"is_default": "1",
"sequence": i,
"image": imageData ]
Alamofire.upload(multipartFormData: { (multipartFormData) in
print(parameters)
multipartFormData.append(imageData as Data, withName: "home-\(self.index)", fileName: "home-\(self.index)", mimeType: "image/jpeg")
for (key, value) in parameters {
print(key,value)
multipartFormData.append((value as AnyObject).data(using: String.Encoding.utf8.rawValue)!, withName: key)
}
}, to:url)
{ (result) in
switch result {
case .success(let upload, _, _):
upload.uploadProgress(closure: { (Progress) in
//Print progress
})
upload.responseJSON { response in
print(response.request) // original URL request
if let JSON = response.result.value {
print("JSON: \(JSON)")
}
}
case .failure(let encodingError):
print(encodingError)
break
}}}}
希望有人可以提供帮助...谢谢...:)
【问题讨论】:
-
为什么要使用两次循环?
-
某处存在对
dataUsingEncoding:的(内部/隐藏)调用,该调用不起作用,因为该对象是(NS)Number而不是(NS)Data。我会说是那条线:multipartFormData.append((value as AnyObject).data(using: String.Encoding.utf8.rawValue)!, withName: key)。你不能在任何类型的value上做((value as AnyObject).data(using: String.Encoding.utf8.rawValue)。我不知道其他对象的类是什么,但"sequence": i,应该会崩溃。 -
我也尝试给序列一个硬编码值“1”,但它再次崩溃,可能它不接受给定格式的图像...... imageData 只是显示为“403829 字节” ...这可能是个问题吗,@Larme ?
-
循环使用了两次,@AsaduzzamanShuvro 因为序列具有从图库中获取的图像数量,而另一个循环遍历每个拾取的图像...
-
使用我的答案stackoverflow.com/questions/45651187/… 只需传递图像,如 dict.set(imgview.image, forKey:"upload1") 如果您不上传视频,则将 nil 作为参数传递 @User.bw跨度>