2017-04-12 10 views
0

にparamsは私の要件は、サーバーにファイル名と期間と録音した音声ファイルをアップロードすることであるRESTのAPIを使用してMultipartformデータをサーバ・スウィフト3

私はマルチパートフォームデータを形成する必要があるコード

private func createRequestBody(boundary:"--BXDFG", multidata:Data, mime:"audio/mp4", filePathKey:"file", filename:"test", metas:["title":"Mytitle","duration":"30"] -> Data { 

     var body = Data() 

     body.append(Data("--\(boundary)\r\n".utf8)) 
     body.append(Data("Content-Disposition: form-data; name=\"\(filePathKey)\"; filename=\"\(filename)\"\r\n".utf8)) 
     body.append(Data("Content-Type: \(mime)\r\n\r\n".utf8)) 
     body.append(multidata) 
     body.append(Data("\r\n".utf8)) 
     if (metas != nil) { 

      for (key, value) in metas! { 

       body.append(Data("--\(boundary)\r\n".utf8)) 
       body.append(Data("Content-Disposition: form-data; name=\"\(key)\"\r\n".utf8)) 
       body.append(Data((value as! String).utf8)) 
       body.append(Data("\r\n".utf8)) 
      } 

     } 
     body.append(Data("--\(boundary)--\r\n".utf8)) 

     return body 

    } 

以下のようである私は私がマルチパートフォーム要求サーバー側で

、私が持っていると、「タイトル」と「継続」を追加していたNSDataとして、ループのためのオーディオを渡してやっていますコード

@api.route('/upload/<userid>', methods=['POST']) 
def upload(userid): 
    if request.method == 'POST': 
     if 'title' not in request.form: 
      return jsonify({'error': 'Need a valid title for uploaded file', 'code': 403}) 

「タイトル」がマルチパートのフォームデータに渡されない場合、サーバーはエラー応答を返します。

私の場合、「title」がリクエストの一部として追加されても、データはサーバに渡されず、サーバはエラーを返します。オーディオデータだけを渡して、サーバー側の「タイトル」の検証を取り除くと、オーディオデータがサーバーに正常にアップロードされます。

は、私が「タイトル」と「データ」のサーバーに

PSを通過していない理由を理解することはできませんよ:APIリクエストはPOSTMANクライアントで正常に動作します。

おかげ

+0

にライン

body.append(Data("Content-Disposition: form-data; name=\"\(key)\"\r\n".utf8)) 

の交換私の場合を解決し、私はなぜ知りませんこれが起こっているgですが、このケースではalamofireを使用することをお勧めします。それは簡単でスムーズです。確認してください: https://github.com/Alamofire/Alamofire –

答えて

0

これは

body.append(Data("Content-Disposition: form-data; name=\"\(key)\"\r\n\r\n".utf8)) 

追加し、追加/ R/N