2017-05-22 5 views
1

これを理解することが困難でした。 Alamofire(4.4.0)を使用した投稿要求と私のヘッダはほとんどのものでうまく動作しますが、今回はビデオと同様にストリングの辞書を送る必要があります。Alamofire multiPartFormDataアップロードにヘッダーを追加する

ビデオはUIImagePickerControllerを介して記録され、最終的にそれを辞書にする情報は一連のスライダ、スイッチ、およびテキストフィールドによって作成されます。

次のように私に迷惑を与えているブロックがある:

let headers: HTTPHeaders = [ 
     "X-Access-Token": self.user 
    ] 
let requestUrl = try! URLRequest(url: "http://exampleUrl.com", method: .post, headers: headers) 

    upload(
     multipartFormData: { (multipartFormData) in 
      multipartFormData.append(videoURL!, withName: "video_source") 
      multipartFormData.append(self.alphaLabel.text!.data(using: .utf8)!, withName: "alpha") 
      multipartFormData.append(self.betaLabel.text!.data(using: .utf8)!, withName: "beta") 
      multipartFormData.append(self.gammaLabel.text!.data(using: .utf8)!, withName: "gamma") 
      multipartFormData.append(self.deltaTextField.text!.data(using: .utf8)!, withName: "delta") 
      multipartFormData.append(self.epsilonScrollPicker.data(using: .utf8)!, withName: "epsilon") 
      multipartFormData.append(zetaArray!.data(using: .utf8)!, withName: "zeta") 

     }, 
      to: requestUrl as! URLConvertible) { encodingResult in 
       switch encodingResult { 
       case .success (let upload, _, _): 
        upload.responseJSON { response in 
         print(response) 
        } 
       case .failure (let encodingError): 
        print(encodingError) 
      } 
     } 

上記のコードが得られます。 「スレッド1:信号SIGABRT」

コンソール出力: 「の値をキャストできませんでしたが'Foundation.URLRequest'を 'Alamofire.URLConvertible'に変更してください。 "

他のすべての作品は、私はこれを実行したかどうかを確認するには: - 私のサーバーから不正なアクセストークン

let requestUrl "http://exampleUrl.com" 

upload(
    multipartFormData: { (multipartFormData) in 
     multipartFormData.append(videoURL!, withName: "video_source") 
     multipartFormData.append(self.alphaLabel.text!.data(using: .utf8)!, withName: "alpha") 
     multipartFormData.append(self.betaLabel.text!.data(using: .utf8)!, withName: "beta") 
     multipartFormData.append(self.gammaLabel.text!.data(using: .utf8)!, withName: "gamma") 
     multipartFormData.append(self.deltaTextField.text!.data(using: .utf8)!, withName: "delta") 
     multipartFormData.append(self.epsilonScrollPicker.data(using: .utf8)!, withName: "epsilon") 
     multipartFormData.append(zetaArray!.data(using: .utf8)!, withName: "zeta") 

    }, 
     to: requestUrl as! URLConvertible) { encodingResult in 
      switch encodingResult { 
      case .success (let upload, _, _): 
       upload.responseJSON { response in 
        print(response) 
       } 
      case .failure (let encodingError): 
       print(encodingError) 


     } 
    } 

を私は他のパラメータを指定せずに異なる要求URL、1を使用している場合は、私は401を取得します。これは私がこの新しい要求でヘッダーに1つを渡すことができないので期待されるべきです。

誰かがアップロードのマルチパートフォームデータリクエストを行う方法を明らかにできるのであれば、には認証のためのヘッダーが含まれています。

答えて

1

ヘッダーを私の作業コードに追加しました。コードを置き換えることができます。

let yourHeaders: HTTPHeaders = [ 
     "X-Access-Token": "dsfdsfdsf" 
    ] 

    Alamofire.upload(multipartFormData: { multipartFormData in 

     for (key, value) in parameter 
     { 
      multipartFormData.append(value.data(using: .utf8)! , withName: key) 
     } 
     for videoData in VideoDataArray 
     { 
      if videoData 
      { 
       multipartFormData.append(videoData , withName: videoParameterName, fileName: "videoName.mp4", mimeType: "video/mp4") 
      } 
     } 
    }, to: "YourApiUrlHere", method: .post, headers : yourHeaders, 
      encodingCompletion: { encodingResult in 
       switch encodingResult { 
       case .success(let upload, _, _): 
        print(upload.progress) 

        upload.responseJSON { response in 

         if let JSON = response.result.value 
         { 
          print("JSON: \(JSON)")        
        } 
        break 
       case .failure(_): 
        } 
       } 
     }) 
+0

私は画像をアップロードしようとしていません。だから私はあなたの** UIImageJPEGRepresentation **を利用できるとは思っていません。あなたがkutTypeMovieの同等物を知っていない限り、あなたが持っているものが私が必要とするもののために働くかどうかはわかりません。 –

+0

@NickDiVona私はあなたのパラメータを追加し、応答を処理するように言った。これは単なるAlmofire Method呼び出しの表現です。 UIImageJPEGRepresentationがNSDataを返すことを知っていれば、そこでビデオデータを追加できます。 – ChanWarde

+0

ああ、私は参照してください。ありがとうございました。 –

関連する問題