我正在尝试使用Alamofire上传一系列图像,但出现错误

时间:2019-06-20 10:05:05

标签: swift alamofire multipartform-data image-uploading

我正在尝试使用Alamofire 4.8.2将一系列图像上传到服务器上

功能如下:

func uploadMultiplePhotos(centreId: Int, imagesArray: [UIImage]) {

    let parameters = ["ec_id": centreId, "uploaded_image": imagesArray] as [String : Any]
    Alamofire.upload(multipartFormData: { (multipartFormData : MultipartFormData) in

        let count = imagesArray.count

        for i in 0..<count{

            multipartFormData.append(imagesArray[i], withName: "photo[\(i)]", fileName: "photo\(i).jpeg", mimeType: "image/jpeg")


        }
        for (key, value) in parameters {

            multipartFormData.append((value as AnyObject).data(using: String.Encoding.utf8.rawValue)!, withName: key)
        }
        print(multipartFormData)
    }, to: storeCentreImageURL) { (result) in

        switch result {
        case .success(let upload, _ , _):

            upload.uploadProgress(closure: { (progress) in

                print("uploding: \(progress.fractionCompleted)")
            })

            upload.responseJSON { response in

                print(response.result.value!)

            }

        case .failure(let encodingError):
            print("failed")
            print(encodingError)

        }
    }

}

在下面的行中出现错误:

multipartFormData.append(imagesArray[i], withName: "photo[\(i)]", fileName: "photo\(i).jpeg", mimeType: "image/jpeg")
  

无法使用类型为'(UIImage,withName:String,fileName:String,mimeType:String)'的参数列表调用'append'

1 个答案:

答案 0 :(得分:2)

您需要将图像转换为数据

imagesArray.indices.forEach {
  multipartFormData.append(imagesArray[$0].jpegData(compressionQuality:0.8)!, withName: "photo[\($0)]", fileName: "photo\($0).jpeg", mimeType: "image/jpeg")
}