2017-04-12 2 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

난 이유를 모르겠어/이건 일이야. g,하지만이 경우에는 alamofire를 사용하도록 제안 할 수 있습니다. 쉽고 원활합니다. 확인 : https://github.com/Alamofire/Alamofire –

답변

0

이것은 내 경우

가 교체 라인

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

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

추가로 추가 해결/r은 N