2016-07-22 5 views
1

Ich habe ein Problem mit dem Push-Video auf dem Server. Meine API hat zwei Parameter im Hauptteil: Details und Datei und ich muss sie durch den Token im Header autorisieren.Senden von Video auf dem Server durch mehrteilige Formulardaten

Am Anfang wurde meine Datei vorbereitet und an die URL exportiert, die ich zur Methode dränge. Weiter mit Details (String-Wert) Ich versuche, es vorzubereiten, auf dem Server zu senden.

Nachdem ich betreibe meine app ich diesen Fehler bekommen haben:

Error Domain=NSCocoaErrorDomain Code=3840 "No value." UserInfo={NSDebugDescription=No value.}

Server in respond gibt alle Daten über geschoben Video in JSON

ich dieses Tutorial verwendet, um zu versuchen einige erste Schritt machen: https://mindfiremobile.wordpress.com/2014/01/27/upload-video-to-server-using-multiparts/

Es sind meine ersten Schritte mit dem Push-Video auf dem Server und ich werde mich freuen für Hilfe.

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() 
    } 

Antwort

1

Es ist ein Server-Problem.Suchen Sie Ihr Backend nichts zu echo und Sie erhalten die Antwort.

Verwandte Themen