NSURLSessionUploadTask time out

I use AFNetworking to upload video files to the server, and I get download synchronization almost every time I try to upload files.

I am trying to upload multiple files at the same time, so far the max I tried is 2, because they are not syncing.

Relevant Code:

for i in 0 ... 2 { let filePath : NSURL = NSURL(fileURLWithPath: "filepathgoeshere") let tempFilename = String(format: "%f", NSDate.timeIntervalSinceReferenceDate()) let tempFileUrl = NSURL(fileURLWithPath: "\(NSTemporaryDirectory())\(tempFilename)") let request = AFHTTPRequestSerializer().multipartFormRequestWithMethod("POST", URLString: getAPIURL(), parameters: parameters, constructingBodyWithBlock: { (formData : AFMultipartFormData!) -> Void in formData.appendPartWithFileURL(filePath, name: "file", fileName: "file", mimeType: "video/mp4", error: nil) }, error: nil) // Work around for problem with multi-part requests not giving a content-length and being rejected by S3 // See: https://github.com/AFNetworking/AFNetworking/issues/1398 AFHTTPRequestSerializer().requestWithMultipartFormRequest(request, writingStreamContentsToFile: tempFileUrl, completionHandler: { (error: NSError!) -> Void in var manager : AFURLSessionManager = AFURLSessionManager(sessionConfiguration: NSURLSessionConfiguration.defaultSessionConfiguration()) var progress : NSProgress? = nil var uploadTask : NSURLSessionUploadTask = manager.uploadTaskWithRequest(request, fromFile: tempFileUrl, progress: &progress, completionHandler: { (response: NSURLResponse!, responseObject: AnyObject!, error: NSError!) -> Void in NSFileManager.defaultManager().removeItemAtURL(tempFileUrl, error: nil) if let err = error { println("There was an error :(") println("Error: \(err.localizedDescription)") // TODO: Add in relevant error catching successCallback(success: false) } else { successCallback(success: true) } }) if let testNil = progress { progressCallback(progress: progress) } uploadTask.resume() }) } 
+5
source share
1 answer
 func multipleFileUploadRequestSessionManager(url:String,parameters:NSDictionary,fileInfo:NSArray,completionHandler: (response:NSURLResponse?,responseObject:AnyObject?,error:NSError?) -> ()) { let request : NSMutableURLRequest = AFHTTPRequestSerializer().multipartFormRequestWithMethod("POST", URLString: url, parameters: parameters, constructingBodyWithBlock: { (formData) -> Void in if(fileInfo.count > 0) { for file in fileInfo { var fileData = file.valueForKey("fileData") as NSData var name = file.valueForKey("filenameData") as String var fileName = file.valueForKey("fileName") as String var mimeType = file.valueForKey("mimeType") as String formData.appendPartWithFileData(fileData, name: name, fileName: fileName, mimeType: mimeType) } } }, error: nil) let conf : NSURLSessionConfiguration = NSURLSessionConfiguration.defaultSessionConfiguration() let manager : AFURLSessionManager = AFURLSessionManager(sessionConfiguration: conf) var progress : NSProgress? = nil var uploadTask:NSURLSessionUploadTask = manager.uploadTaskWithStreamedRequest(request, progress: nil) { (response, responseObject, error) -> Void in completionHandler(response:response,responseObject:responseObject,error:error) } uploadTask.resume() } 

This can help you when uploading multiple files.

+1
source

Source: https://habr.com/ru/post/1203340/


All Articles