问题标签 [nsurlsessionuploadtask]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
nsurlsession - NSURLSession 委托跨类拆分 - NSURLSession、NSURLUploadTask、NSURLDownloadTask
我正在为我的应用创建上传/下载媒体功能。我的上传队列工作正常,但是当我添加下载和必要的下载委托时,上传委托被称为事件,尽管任务是下载。我最初的类结构是一个单例 QueueController,它具有 NSURLSession 和委托(但不下载)以及可以保存上传或下载的 TransferModel。当我尝试添加下载时,回调无法正常工作,因此我将与传输相关的委托放在两个子类 TransferUploadModel 和 TransferDownloadModel 中,但现在我的委托没有触发。
这是我的方法签名的样子: QueueController:
任何帮助深表感谢。
谢谢,J
ios - NSURLSessionUploadTask 后台会话 - 带有一些参数的文件上传
服务器端是一个 PHP Web 服务,它接受 post 参数 userid、authenticationKey、一些标题、一些评论和一个文件
我正在 iPhone 上录制音频并上传到此服务。如果我使用 NSURLSessionUploadTask 并使用 DefaultSessionConfiguration 构造多部分文件上传请求,则代码可以正常工作
但是,我想使用后台会话配置上传文件。
我在发布请求中找不到任何用于后台文件上传(以及一些参数)的示例代码。我正在使用 Swift 和 iOS 8
感谢您的帮助。
谢谢。萨拉
ios - 在后台使用 NSURLSessionUploadTask 上传文件
我正在使用 NSURLSessionUploadTask 上传多个文件。我想在后台运行相同的进程,它适用于当前文件。在当前文件成功上传之前,应用程序不会暂停。现在,当第二个文件上传时,它不会开始上传过程,直到我再次启动或应用程序变得活跃。上传不会介于两者之间,这很好。第一次完成时有什么方法可以开始下一个上传过程。第二次上传也在后台开始,但从应用程序进入后台最多可以工作 3 分钟。这里我展示了我的代码:
上面的代码完全可以工作,但是在 App 后台模式 3 分钟后,下一个文件没有开始在后台上传。
任何帮助将不胜感激。在此先感谢...有关更多说明,请与我联系。
ios - NSURLSessionUploadTask 没有使用 NSURLSessionConfiguration backgroundSessionConfiguration 调用委托方法
我正在尝试使用上传图像backgroundSessionConfiguration
并将NSURLSessionUploadTask
实时上传过程保持在应用程序后台模式。
但是当我使用时backgroundSessionConfiguration
,NSURLSessionUploadTask
在使用defaultSessionConfiguration
它调用委托方法时不会调用委托方法。
这是代码。
如果我更改backgroundSessionConfiguration
为defaultSessionConfiguration
,委托方法将调用。
请帮助我了解我缺少什么。
谢谢,尼丁
objective-c - NSURLSessionUploadTask 和 API 调用
问题:
我正在构建一个照片组织/备份 iOS 应用程序,它需要将用户设备库中的照片上传到我们的服务器。
用户创建他的个人资料并登录到应用程序,并扫描他的图库中的图像。上传以多部分表单数据请求的形式分批进行,大约 10 个文件。在每批上传后,我需要对我们的服务器进行 api 调用以提交刚刚结束的上传。服务器还可以在处理之前提交的批次后进行自己的提交,例如根据图像内容创建相册等。如果发生这种情况,客户端在提交上传时会从服务器获得不同步的响应,并且它必须在提交上传之前首先获取服务器提交。随后计划上传下一批 10 张图像。
我为此目的使用 NSURLSessionUploadTask。当应用程序处于挂起状态时上传完成时,应用程序会被唤醒,我可能需要执行以下 1,2,3 或仅 2,3
- 获取服务器为之前提交的上传完成的提交
- 提交刚刚完成的上传
- 安排下一批 10 张图片上传
==================================================== ==
这对我们不起作用。上传完成后,应用程序在唤醒时没有足够的时间执行 1,2,3 或 2,3。请求后台执行时间不能超过 180 秒,因为 Apple 限制了它。
我不能在不提交它们的情况下继续上传批次,因为服务器在开始覆盖图像之前有 100 个图像的缓冲区。如果我继续上传而不提交,服务器开始覆盖以前上传的图像,从而丢失数据。
我还观察到,即使我尝试在不执行任何提交的情况下上传多批图像,上传程序守护进程 nsurlsessiond 不会立即拾取上传程序守护进程 nsurlsessiond 后立即在后台调度为 NSURLSessionUploadTask 的第一个任务。有时它会在 5 分钟后恢复,有时会在 10 分钟后恢复。在整个过程中,我的 Wifi 连接良好,并且我的 NSURLSession 已相应配置。
对于上面我在 StackOverflow 上读到的内容,如果 nsurlsessiond 队列为空,它不会立即选择下一个任务。所以只是为了试验,我提交了 3-4 批上传并将应用程序置于后台,但行为是相同的。第二次上传直到 5-10 分钟才会被接收,依此类推,第三次和第四次。
==================================================== ==
我已经看到 Google 照片在不使用定位服务的情况下连续上传。Dropbox 也这样做。他们的提交架构可能与我们的不同。但是目前,即使忽略了我必须进行额外 api 调用的整个提交方面,我什至无法连续上传 3-4 批图像。
您能否指导我们分析这种情况,以便我为我们的应用程序提供后台上传解决方案。
再次感谢。
ios - NSURLSession 任务执行顺序
我正在按顺序向 NSURLSession (background mode) 添加多个任务。我一直保持 HTTPMaximumConnectionsPerHost = 1。但是,我看到上传是按随机顺序进行的,即在第 1 项可能是第 5 项被拾取之后,然后是第 3 项等 - 上传不会按顺序发生我已经提供给 NSURLSession。有没有办法完全按照添加的方式订购上传?
ios - 当应用程序挂起时,我如何知道 NSURLSessionUploadTask 是否正在工作?
当我的应用程序在前台运行时,我会看到定期调用:NSURLSessionTaskDelegate -> URLSession:task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend:
当我的应用程序移动到后台并被挂起时,对该方法的调用停止,因此我没有关于 NSURLSessionUploadTask 是否继续上传的反馈。是否有任何技术可以获取有关上传的反馈?
ios - NSURLSessionUploadTask 响应内容数据为空
这是我到目前为止的地方NSURLSessionUploadTask
:
- iOS 应用程序
NSURLSessionUploadTask
使用 POST启动 - 服务器收到 HTTP POST 请求
- 服务器读取请求的内容,以便上传数据
- 服务器向 iOS 发送 HTTP 响应,其中包含以下内容:
- iOS 应用程序接收响应并
NSLogs
通过NSURLSessionTaskDelegate -> URLSession:task:didCompleteWithError:
- 但是,当我尝试
NSLog
响应内容时,该方法NSURLSessionTaskDelegate: -> URLSession:dataTask:didReceiveData:
- 被称为我得到这个输出:
谁能告诉我为什么 iOS 似乎丢失了 HTTP 响应中的内容?
ios - NSURLSessionUploadTask (1) 上传数据,(2) 挂起约 200 秒,(3) 重复
这是我到目前为止的地方NSURLSessionUploadTask
:
- iOS 应用程序
NSURLSessionUploadTask
使用 POST启动 - 服务器收到 HTTP POST 请求
- 服务器读取请求的内容,以便上传数据
- iOS 应用程序调用
URLSession:task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend:
重复以totalBytesSent
等于等于的最终调用结束totalBytesExpectedToSend
- 服务器向 iOS 发送 HTTP 响应,其中包含以下内容:
- iOS 应用程序收到此响应(通过 Wireshark 确认)
- iOS应用程序不会像它应该调用以下方法来完成上传任务:
NSURLSessionTaskDelegate: -> URLSession:dataTask:didReceiveData:
NSURLSessionTaskDelegate -> URLSession:task:didCompleteWithError:
- 相反,在挂起约 200 秒后,iOS 应用程序会重复数据上传任务
此数据上传、HTTP 200 响应、~200 秒挂起过程似乎无限重复。为什么 iOS 应用程序收到 HTTP 响应后不调用NSURLSessionTaskDelegate: -> URLSession:dataTask:didReceiveData:
?NSURLSessionTaskDelegate -> URLSession:task:didCompleteWithError:
ios - NSURLSession 和 Content-Type 的问题
我正在尝试将照片上传到网络服务,并且我正在使用以下代码:
我收到错误 500,我不知道该怎么做。
我尝试过实现 AFNetworking,附加身体数据,如This、This和This。然而,没有运气。
上面的代码来自 Ray Wenderlich 的网站:Here。
我需要提供的服务器是这样的:
- 文件(图片)
- API 密钥(我尝试使用 NSMutableURLRequest's
addValue:forHTTPHeaderField
: 但它不起作用,所以我在 URL 中使用它。我知道这不是安全方面的最佳做法,但我越来越绝望了工作了 10 多个小时!一步一步!) Content-Type
成为_multipart/form-data
这就是我需要提供的全部内容,但我却一无所获!
有人可以帮忙吗?
先感谢您
更新 1:所以我对 URL 结构进行了一些更改,并将 API 密钥作为字典添加到 HTTPBody 中,现在我收到错误 403。
苹果没有做出任何努力来序列化这部分连接,这似乎真的很奇怪。反正。我真的很感谢任何人的帮助!