Как отправить изображение на сервер с другими параметрами - PullRequest
0 голосов
/ 10 октября 2019

Я называю метод POST следующим образом

let parameters = ["empId": "1", "empName": "John"]
guard let url = URL(string: "test.com") else {
    return
}
var urlRequest = URLRequest(url: url)
urlRequest.httpMethod = "POST"
urlRequest.setValue("application/json", forHTTPHeaderField: "Content-Type")
do {
    urlRequest.httpBody = try JSONSerialization.data(withJSONObject: parameters, options: .prettyPrinted)
} catch {

}
URLSession.shared.dataTask(with: urlRequest) { (data, response, error) in
    if let data = data, let response = try? JSONSerialization.jsonObject(with: data, options: .allowFragments) as? [String: Any] {
        print(response)
    }
}.resume()

Это работает. Теперь мне нужно дополнительно отправить изображение на сервер типа image/png с именем image. Как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 10 октября 2019

Я не уверен, как ваш бэкэнд читает ваш ответ, но обычно поддерживаемые сервисы используют многокомпонентные данные

см. Ссылку ниже для многокомпонентных данных: Загрузка изображения с параметрами в Swift

0 голосов
/ 10 октября 2019

Если вы используете Alamofire , ObjectMapper

Этот пример - отправленное изображение, строка.


func requestMultipart<T: Mappable>(
  method: HTTPMethod,
  _ URLString: URLConvertible,
  parameters: [String: String]? = nil,
  images: [String: Data],
  encoding: Alamofire.ParameterEncoding = URLEncoding.default,
  success: @escaping (T) -> Void,
  failure: @escaping (Error) -> Void
) {
  Alamofire
    .SessionManager
    .default
    .upload(
      multipartFormData: { multipartFormData in
        if !images.isEmpty {
          images.forEach { (data) in
          multipartFormData.append(
            data.value,
            withName: data.key,
            fileName: data.key + ".jpeg",
            mimeType: "image/jpeg"
          )
        }
        parameters?.forEach { (params) in
          multipartFormData.append(
            params.value.data(
              using: String.Encoding.utf8,
              allowLossyConversion: false
            )!,
            withName: params.key
          )
        }
      },
      to: URLString,
      method: method,
      headers: header,
      encodingCompletion: { encodingResult in
        // handle
      }
    )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...