Я пытаюсь загрузить несколько изображений на сервер с помощью Alamofire
, и для выбора нескольких изображений я использовал BSImagePicker
pod.
Я создал две переменные для хранения нескольких изображений
//Mark:- storing multiple images
var SelectedAssets = [PHAsset]()
var PhotoArray = [UIImage]()
И это код, который я написал, чтобы открыть BSImagePicker
при нажатии кнопки.
@IBAction func browseButtonTapped(_ sender: UIButton) {
let vc = BSImagePickerViewController()
vc.maxNumberOfSelections = 3
//display picture gallery
self.bs_presentImagePickerController(vc, animated: true,
select: { (asset: PHAsset) -> Void in
}, deselect: { (asset: PHAsset) -> Void in
// User deselected an assets.
}, cancel: { (assets: [PHAsset]) -> Void in
// User cancelled. And this where the assets currently selected.
}, finish: { (assets: [PHAsset]) -> Void in
// User finished with these assets
for i in 0..<assets.count
{
self.SelectedAssets.append(assets[i])
}
self.convertAssetToImages()
}, completion: nil)
}
И код для преобразования активов в изображения
func convertAssetToImages() -> Void {
if SelectedAssets.count != 0{
for i in 0..<SelectedAssets.count{
let manager = PHImageManager.default()
let option = PHImageRequestOptions()
var thumbnail = UIImage()
option.isSynchronous = true
manager.requestImage(for: SelectedAssets[i], targetSize: CGSize(width: 200, height: 200), contentMode: .aspectFill, options: option, resultHandler: {(result, info)->Void in
thumbnail = result!
self.PhotoArray.append(thumbnail) // here I stored it in photoArray
})
}
}
}
Теперь это код загрузки нескольких изображений
func uploadMultipleImagesToServer(postId: String) {
print(userDetail.getUserID())
let param: [String:Any] = ["user_id": String.getString(userDetail.getUserID()), "post_id": postId]
var image = [UIImage()]
image = self.PhotoArray
print(image)
Alamofire.upload(multipartFormData: { (multipartFormData) in
image.indices.forEach {
multipartFormData.append(image[$0].jpegData(compressionQuality:0.8)!, withName: "file[\($0)]", fileName: "swift_file\($0).jpeg", mimeType: "image/jpeg")
}
for (key, value) in param {
multipartFormData.append("\(value)".data(using: String.Encoding.utf8)!, withName: key)
}
}, to: Constants.BASE_URL+"upload_image.php")
{ (result) in
switch result {
case .success(let upload, _, _):
upload.uploadProgress(closure: { (progress) in
//Print progress
print("uploading \(progress)")
})
upload.responseJSON { response in
//print response.result
guard let json = response.result.value as? [String:Any] else {return}
print(json)
guard let status = json["status"] as? String else {return}
print(status)
if status == "1" {
guard let message = json["message"] as? String else {return}
print(message)
// self.showNormalAlertWithTitle("Success", message: message)
self.navigationController?.popViewController(animated: true)
} else if status == "0" {
guard let message = json["message"] as? String else {return}
print(message)
// self.showNormalAlertWithTitle("Alert!", message: message)
}
else {
}
}
case .failure( _): break
//print encodingError.description
}
}
}
Но это дает мне ошибку, что
Загрузить действительные изображения. Разрешены только PNG и JPEG.
Я не понимаю, что я делаю неправильно. Пожалуйста, помогите?