使用 Alamofire 快速上传多张图片 [英] Upload multiple images in swift using Alamofire
本文介绍了使用 Alamofire 快速上传多张图片的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用以下代码将单个图像上传到服务器:
I'm using the following code to upload a single image to a server:
private static func urlRequestWithComponents(urlString:String, parameters:Dictionary<String, String>, imageData:NSData?, imageName: String) -> (URLRequestConvertible , NSData) {
// create url request to send
let mutableURLRequest = NSMutableURLRequest(URL: NSURL(string: urlString)!)
mutableURLRequest.HTTPMethod = Alamofire.Method.POST.rawValue
let boundaryConstant = "myRandomBoundary12345";
let contentType = "multipart/form-data;boundary="+boundaryConstant
mutableURLRequest.setValue(contentType, forHTTPHeaderField: "Content-Type")
// create upload data to send
let uploadData = NSMutableData()
if(imageData != nil && imageData?.length != 0) {
// add image
uploadData.appendData("
--(boundaryConstant)
".dataUsingEncoding(NSUTF8StringEncoding)!)
uploadData.appendData("Content-Disposition: form-data; name="(imageName)"; filename="(StringHelper.sharedInstance.randomString(5)).png"
".dataUsingEncoding(NSUTF8StringEncoding)!)
uploadData.appendData("Content-Type: image/png
".dataUsingEncoding(NSUTF8StringEncoding)!)
uploadData.appendData(imageData!)
}
// add parameters
for (key, value) in parameters {
uploadData.appendData("
--(boundaryConstant)
".dataUsingEncoding(NSUTF8StringEncoding)!)
uploadData.appendData("Content-Disposition: form-data; name="(key)"
(value)".dataUsingEncoding(NSUTF8StringEncoding)!)
}
uploadData.appendData("
--(boundaryConstant)--
".dataUsingEncoding(NSUTF8StringEncoding)!)
print("upload",parameters)
// return URLRequestConvertible and NSData
return (Alamofire.ParameterEncoding.URL.encode(mutableURLRequest, parameters: nil).0, uploadData)
}
如何通过编辑此代码在单个参数中上传多张图片?
How can I upload multiple images in single parameter by editing this code?
推荐答案
Swift 3只需使用带有图像上传参数的[]"即可使其成为图像数组.
Swift 3 Just use "[]" with image upload param to make it array of images.
Alamofire.upload(multipartFormData: { multipartFormData in
// import image to request
for imageData in imagesData {
multipartFormData.append(imageData, withName: "(imageParamName)[]", fileName: "(Date().timeIntervalSince1970).jpeg", mimeType: "image/jpeg")
}
for (key, value) in parameters {
multipartFormData.append(value.data(using: String.Encoding.utf8)!, withName: key)
}
}, to: urlString,
encodingCompletion: { encodingResult in
switch encodingResult {
case .success(let upload, _, _):
upload.responseJSON { response in
}
case .failure(let error):
print(error)
}
})
这篇关于使用 Alamofire 快速上传多张图片的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文