проблема при отправке изображения, видео и параметров Multipart на сервер - PullRequest
0 голосов
/ 18 октября 2018

Я использую мойю и хочу отправить словарь изображений, видео и параметров [String: Any]

для параметров, которые я пишу

*for (key, value) in param {
            multipartFormData.append(Moya.MultipartFormData(provider: .data((value as AnyObject).data(using: String.Encoding.utf8.rawValue) ?? Data()) , name : key))
            }*

, но я получаю эту ошибку какМой словарь параметров также содержит String & Int

*-[__NSCFNumber dataUsingEncoding:]: unrecognized selector sent to instance*

Пожалуйста, предложите, как я могу решить эту проблему?

1 Ответ

0 голосов
/ 18 октября 2018

чтобы добавить изображение внутрь multipartFormData, вы можете попробовать что-то вроде этой строки.

  MultipartFormData.append(UIImageJPEGRepresentation(UIImage(named: "1.png")!, 1)!, withName: "photos[1]", fileName: "swift_file.jpeg", mimeType: "image/jpeg")

с использованием Alamofire полный пример выглядит примерно так

let parameters = [
            "param1" :        "1000",
            "param2":      "Murat Akdeniz",
            "param3":        "xxxxxx"]

let imgData = UIImageJPEGRepresentation(UIImage(named: "1.png")!,1)



    Alamofire.upload(
        multipartFormData: { MultipartFormData in
        //    multipartFormData.append(imageData, withName: "user", fileName: "user.jpg", mimeType: "image/jpeg")

            for (key, value) in parameters {
            let value = "\(value)"  //Added this line to use [String:Any ] param types

                MultipartFormData.append(value.data(using: String.Encoding.utf8)!, withName: key)
            }

    MultipartFormData.append(UIImageJPEGRepresentation(UIImage(named: "1.png")!, 1)!, withName: "photos[1]", fileName: "swift_file.jpeg", mimeType: "image/jpeg")
    MultipartFormData.append(UIImageJPEGRepresentation(UIImage(named: "1.png")!, 1)!, withName: "photos[2]", fileName: "swift_file.jpeg", mimeType: "image/jpeg")


}, to: "youURL") { (result) in

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

        upload.responseJSON { response in
            print(response.result.value)
        }

    case .failure(let encodingError): break
        print(encodingError)
    }


}
...