Загрузите данные ключа в alamofire и URLSession, как его добавить? - PullRequest
0 голосов
/ 02 июня 2018

Мне нужно загрузить данные на сервер, и есть эта функция

uploadTask(with request: URLRequest, from bodyData: Data) -> URLSessionUploadTask

, которую использует alamofire с почти такой же подписью

upload(_ data: Data, with urlRequest: URLRequestConvertible)

Любая идея, как добавить имя в качестве ключа для добавленных данных?

Я видел это iOS - Как загрузить видео с uploadTask? добавив имя файла в заголовках, я 'Мы проверили Apple Docs и ничего не сказали об этом

Большое спасибо

1 Ответ

0 голосов
/ 02 июня 2018

Предположим, что вы хотите загрузить изображение с ключом, названным userImage, тогда вы можете использовать многочастную функцию Alamofire.Я использовал SwiftyJSON здесь.Вы можете изменить в соответствии с вашими требованиями.

var parameters: [String:Any]?

//fill your parameters with data. Image is stored as Data and other values are string in this case.

Alamofire.upload(multipartFormData: { (multipartFormData:MultipartFormData) in
        for (key, value) in parameters! {
            if key == "userImage" {
                multipartFormData.append(
                    value as! Data,
                    withName: key,
                    fileName: "profileImage.jpg",
                    mimeType: "image/jpg"
                )
            } else {
                //multipartFormData
                multipartFormData.append((value as! String).data(using: .utf8)!, withName: key)
            }
        }
    }, usingThreshold: 1, to: "yourServiceURL", method: .post, headers: ["yourHeaderkey":"value"]) { (encodingResult:SessionManager.MultipartFormDataEncodingResult) in

        switch encodingResult {
        case .success(let upload, _, _):
            upload.responseJSON { response in
                if response.result.error != nil {
                    return
                }
                if let data = response.result.value {
                    let json = JSON(data)
                }
            }
            break

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