【问题标题】:How to make put request parameters with image Alamofire?如何使用图像 Alamofire 制作放置请求参数?
【发布时间】:2017-08-28 18:08:20
【问题描述】:

我正在通过这种格式发送请求以发出带有参数的请求。但是我将如何使用此参数将图像作为多部分正文发送?

class APIManager: NSObject {
    enum Router: URLRequestConvertible {

        static var baseURLString = baseURLString
        static let xSource = X_SOURCE_HEADER

        case updateProfile([String: AnyObject])

        var method: HTTPMethod {
            switch self {
            case .updateProfile:
                return .put
            }
        }

        var path: String {
            switch self {
            case .updateStockShelfUnits:
                return profile_url
            }
        }
        func asURLRequest() throws -> URLRequest {
            let url = try GlobalData.gBaseURLString.asURL()
            var urlRequest = URLRequest(url: url.appendingPathComponent(path))
            urlRequest.httpMethod = method.rawValue

            switch self {

            case .updateProfile(let parameters):
                urlRequest.setValue(access_token, forHTTPHeaderField: "X-User-Token")
                urlRequest = try URLEncoding.default.encode(urlRequest, with: parameters)
            }
            return urlRequest
        }
    }

    func makeRequestToUpdateProfile(param: [String : AnyObject], img: UIImage, completion: @escaping completionHandlerWithSuccessAndErrorMessage) {

        Alamofire.request(Router.updateprofile(param)) .responseJSON { response in
            switch response.result {
            case .success(let JSON):
                print(JSON)
                completion(true, "Success")
            case .failure(let Error):
                print("Request failed with error: \(Error)")
                completion(false, Error.localizedDescription)
            }
        }
    }
}

在这里,我将如何以图像作为多部分正文的请求参数?请求只有参数的 api 运行良好。

【问题讨论】:

    标签: rest api alamofire put swift3.1


    【解决方案1】:

    通过Swift 3Alamofire 4

    上传带有参数自定义标题的照片/文件
    // import Alamofire
    func uploadWithAlamofire() {
      let image = UIImage(named: "bodrum")!
    
      // define parameters
      let parameters = [
        "hometown": "yalikavak",
        "living": "istanbul"
      ]
    
      Alamofire.upload(multipartFormData: { multipartFormData in
        if let imageData = UIImageJPEGRepresentation(image, 1) {
          multipartFormData.append(imageData, withName: "file", fileName: "file.png", mimeType: "image/png")
        }
    
        for (key, value) in parameters {
          multipartFormData.append((value?.data(using: .utf8))!, withName: key)
        }}, to: "upload_url", method: .post, headers: ["Authorization": "auth_token"],
            encodingCompletion: { encodingResult in
              switch encodingResult {
              case .success(let upload, _, _):
                upload.response { [weak self] response in
                  guard let strongSelf = self else {
                    return
                  }
                  debugPrint(response)
                }
              case .failure(let encodingError):
                print("error:\(encodingError)")
              }
      })
    }
    

    信用:fatihyildizhan

    【讨论】:

      猜你喜欢
      • 2021-01-13
      • 1970-01-01
      • 2017-02-13
      • 1970-01-01
      • 2015-10-25
      • 2018-12-12
      • 2017-05-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多