簡體   English   中英

如何使用圖像Alamofire設置看跌期權請求參數?

[英]How to make put request parameters with image Alamofire?

我正在通過這種格式發送請求以發出帶有參數的請求。 但是,如何使用此參數將圖像作為多部分體發送?

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效果很好。

通過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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM