1
서버에서 비디오를 푸는 데 문제가 있습니다. 내 API에는 본문에 두 개의 매개 변수가 있습니다 (세부 정보 및 파일). 헤더의 토큰으로 인증해야합니다.멀티 파트 양식 데이터로 서버에서 비디오 보내기
처음에는 파일을 준비하고 메소드로 푸시하는 URL로 내 보냅니다. 세부 정보 (문자열 값)와 함께 서버에 보낼 준비를하고 있습니다. https://mindfiremobile.wordpress.com/2014/01/27/upload-video-to-server-using-multiparts/ : 응답에서
Error Domain=NSCocoaErrorDomain Code=3840 "No value." UserInfo={NSDebugDescription=No value.}
서버가 좀 첫 걸음을 시도하는이 튜토리얼을 사용
JSON
에 밀려 비디오에 대한 모든 데이터를 반환 :이 오류를 가지고 내 응용 프로그램을 실행 한 후서버에서 비디오를 푸는 첫 단계로 도움이 될 것입니다.
func postDetailsWithVideo(details: String, file: NSURL) {
let url = serverURL.URLByAppendingPathComponent("api/details")
let videoData = NSData.init(contentsOfURL: file)
let kBoundary = "---------------------------14737809831466499882746641449"
let kStartTag = "--%@\r\n"
let kEndTag = "\r\n"
let kContent = "Content-Disposition: form-data; name=\"%@\"\r\n\r\n"
let body = NSMutableData()
//details data
body.appendData(String(format: kStartTag, kBoundary).dataUsingEncoding(NSUTF8StringEncoding)!)
body.appendData(String(format: kContent, "storyDetails").dataUsingEncoding(NSUTF8StringEncoding)!)
body.appendData(details.dataUsingEncoding(NSUTF8StringEncoding)!)
body.appendData(String(format: kEndTag).dataUsingEncoding(NSUTF8StringEncoding)!)
//Video data
body.appendData(String(format: kStartTag, kBoundary).dataUsingEncoding(NSUTF8StringEncoding)!)
body.appendData("Content-Disposition: form-data; file=\"flv\"\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
body.appendData("Content-Type: application/octet-stream\r\n\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
body.appendData(NSData(data: videoData!))
body.appendData(String(format: kEndTag).dataUsingEncoding(NSUTF8StringEncoding)!)
// close form
body.appendData("--\(kBoundary)--\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
let contentType = "multipart/form-data; boundary=\(kBoundary)"
let request = NSMutableURLRequest(URL: url)
request.HTTPMethod = "POST"
request.setValue("Bearer \(DataManager().getAccessToken())", forHTTPHeaderField: "Authorization")
request.setValue(contentType, forHTTPHeaderField: "Content-Type")
request.HTTPBody = body
print(body)
postDataOnTheServer(request, apiMethod: "api/details")
}
func postDataOnTheServer(request: NSMutableURLRequest, apiMethod: NSString) {
let currentRequest = request
let task = NSURLSession.sharedSession().dataTaskWithRequest(currentRequest){ data, response, error in
if error != nil{
self.delegate?.errorOccured(apiMethod, error: error!)
return
}
do {
let result = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as? [String:AnyObject]
self.delegate?.serverResponseFromAPIMethod(apiMethod, result: result!)
} catch {
print("response - some error")
print(error) //do something with me
}
}
task.resume()
}