加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

swift – NSURLSessionUploadTask超时

发布时间:2020-12-14 04:55:22 所属栏目:百科 来源:网络整理
导读:我正在使用AFNetworking将视频文件上传到服务器,我几乎每次尝试上传文件时都会暂停上传. 我正在尝试同时上传多个文件,到目前为止,我尝试的最大值是2,因为它们保持超时. 相关守则: for i in 0 ... 2 { let filePath : NSURL = NSURL(fileURLWithPath: "filep
我正在使用AFNetworking将视频文件上传到服务器,我几乎每次尝试上传文件时都会暂停上传.

我正在尝试同时上传多个文件,到目前为止,我尝试的最大值是2,因为它们保持超时.

相关守则:

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

解决方法

func multipleFileUploadRequestSessionManager(url:String,parameters:NSDictionary,fileInfo:NSArray,completionHandler: (response:NSURLResponse?,responSEObject:AnyObject?,error:NSError?) -> ())
    {
        let request : NSMutableURLRequest = AFHTTPRequestSerializer().multipartFormRequestWithMethod("POST",URLString: url,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()
}

这可能有助于您进行多个文件上传

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读