2017-09-28 10 views
0

画像をアップロードしようとしていますが、パラメータとヘッダーも渡す必要があります。以下のコードを渡してガイドしてください。Alamofireを使用してパラメータとヘッダーを使用して画像をアップロード

以下は私のコードです:上記のコード

if (request.requestType == "Multipart") 
    { 
     var strToken : String = "" 
     if let access_token = UserDefaults.standard.string(forKey: "auth_token"){ 
      let tokenValue = String(format: "Token %@", access_token); 
      strToken = tokenValue 
     } 

     let headers: HTTPHeaders = [ 
      "Authorization": strToken, 
      "Content-Type": "multipart/form-data" 
     ] 

     let img = request.image 
     let imgData = UIImageJPEGRepresentation(img, 0.2)! 
     do{ 

      let strURL = try strCompleteURL.asURL() 
     Alamofire.upload(multipartFormData: { multipartFormData in 
      multipartFormData.append(imgData, withName: "image_path",fileName: "file.jpg", mimeType: "image/jpg") 
      for (key, value) in params { 
       multipartFormData.append(value.data(using: String.Encoding.utf8.rawValue)!, withName: key) 
      } 
     }, 
         to:strURL) 
     { (result) in 
      switch result { 
      case .success(let upload, _, _): 

       upload.uploadProgress(closure: { (progress) in 
        print("Upload Progress: \(progress.fractionCompleted)") 
       }) 

       upload.responseJSON { response in 
        if response.result.isSuccess { 
         print(response.result.value as Any) 
         if let data = response.data{ 
          self.response.responseCode = response.response?.statusCode 
          self.processResult(data); 
         } 
        } 
       } 

      case .failure(let encodingError): 

        print(encodingError) 
      } 
     } 
     } 
     catch{ 

     } 

は、画像をアップロードしてもいないので、不足しているヘッダーの成功しようとすると、同様にヘッダとパラメータを渡す方法を案内してください。

おかげAlamofire .upload()機能は、あなたが使用したものよりも利用できるより多くのパラメータがあり、この

func uploadImage(image:UIImage, url:String, _ successBlock:@escaping (_ response: JSON)->Void , errorBlock: @escaping (_ error: NSError) -> Void){ 

     let path = baseUrl + url 
     print(path) 


     let headers = ["authorization": AppData().token] 
     let imgData = UIImageJPEGRepresentation(image, 0.2)! 

     let URL = try! URLRequest(url: path, method: .post, headers: headers) 


     Alamofire.upload(multipartFormData: { (multipartFormData) in 
      multipartFormData.append(imgData, withName: "image",fileName: "file.jpg", mimeType: "file") 
for (key, value) in params { 
        multipartFormData.append(value.data(using: String.Encoding.utf8.rawValue)!, withName: key) 
       } 
     }, with: URL) { (result) in 
      switch result { 
      case .success(let upload, _, _): 

       upload.uploadProgress(closure: { (progress) in 
        print("Upload Progress: \(progress.fractionCompleted)") 
       }) 

       upload.responseJSON { response in 
        print(response.result.value) 
        if let value = response.result.value { 
         let json = JSON(value) 
         successBlock(json) 
        } 
       } 

      case .failure(let encodingError): 
       print(encodingError) 
       errorBlock(encodingError as NSError) 

      } 
     } 

    } 

答えて

3

こんにちは私が使用しているヘッダ。

public func upload(
multipartFormData: @escaping (MultipartFormData) -> Void, 
usingThreshold encodingMemoryThreshold: UInt64 = SessionManager.multipartFormDataEncodingMemoryThreshold, 
to url: URLConvertible, 
method: HTTPMethod = .post, 
headers: HTTPHeaders? = nil, 
encodingCompletion: ((SessionManager.MultipartFormDataEncodingResult) -> Void)?) 
{ 
    return ... 
} 

そこではあなたがヘッダあなたがの使用を行っていないのパラメータがある見ることができる(これは彼らのポッドフォルダにAlamofire.swiftファイルで見ることができます)。

コードを自分自身を実行すると、すべてをチェックせずに、これはあなたのヘッダを試す=このライン LETのURLで

+0

問題を行くとどこの私の最高の前提になります! URLRequest(URL:パス、メソッド:.post、ヘッダー:ヘッダー) –

+0

どのような問題が発生しましたか? –

+0

APIからの応答が です。エラー:ResponseSerializationFailed(Alamofire.AFError.ResponseSerializationFailureReason.jsonSerializationFailed(エラードメイン= NSCocoaErrorDomainコード= 3840「文字0の値が無効です」)UserInfo = {NSDebugDescription =文字0の値が無効です})) ▿失敗:AFError ▿responseSerializationFailed:ResponseSerializationFailureReason –

0

よう

関連する問題