问题标签 [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.

0 投票
1 回答
307 浏览

nsurlsession - NSURLSession 委托跨类拆分 - NSURLSession、NSURLUploadTask、NSURLDownloadTask

我正在为我的应用创建上传/下载媒体功能。我的上传队列工作正常,但是当我添加下载和必要的下载委托时,上传委托被称为事件,尽管任务是下载。我最初的类结构是一个单例 QueueController,它具有 NSURLSession 和委托(但不下载)以及可以保存上传或下载的 TransferModel。当我尝试添加下载时,回调无法正常工作,因此我将与传输相关的委托放在两个子类 TransferUploadModel 和 TransferDownloadModel 中,但现在我的委托没有触发。

这是我的方法签名的样子: QueueController:

任何帮助深表感谢。

谢谢,J

0 投票
2 回答
564 浏览

ios - NSURLSessionUploadTask 后台会话 - 带有一些参数的文件上传

服务器端是一个 PHP Web 服务,它接受 post 参数 userid、authenticationKey、一些标题、一些评论和一个文件

我正在 iPhone 上录制音频并上传到此服务。如果我使用 NSURLSessionUploadTask 并使用 DefaultSessionConfiguration 构造多部分文件上传请求,则代码可以正常工作

但是,我想使用后台会话配置上传文件。

我在发布请求中找不到任何用于后台文件上传(以及一些参数)的示例代码。我正在使用 Swift 和 iOS 8

感谢您的帮助。

谢谢。萨拉

0 投票
0 回答
668 浏览

ios - 在后台使用 NSURLSessionUploadTask 上传文件

我正在使用 NSURLSessionUploadTask 上传多个文件。我想在后台运行相同的进程,它适用于当前文件。在当前文件成功上传之前,应用程序不会暂停。现在,当第二个文件上传时,它不会开始上传过程,直到我再次启动或应用程序变得活跃。上传不会介于两者之间,这很好。第一次完成时有什么方法可以开始下一个上传过程。第二次上传也在后台开始,但从应用程序进入后台最多可以工作 3 分钟。这里我展示了我的代码:

上面的代码完全可以工作,但是在 App 后台模式 3 分钟后,下一个文件没有开始在后台上传。

任何帮助将不胜感激。在此先感谢...有关更多说明,请与我联系。

0 投票
0 回答
728 浏览

ios - NSURLSessionUploadTask 没有使用 NSURLSessionConfiguration backgroundSessionConfiguration 调用委托方法

我正在尝试使用上传图像backgroundSessionConfiguration并将NSURLSessionUploadTask实时上传过程保持在应用程序后台模式。

但是当我使用时backgroundSessionConfigurationNSURLSessionUploadTask在使用defaultSessionConfiguration它调用委托方法时不会调用委托方法。

这是代码。

如果我更改backgroundSessionConfigurationdefaultSessionConfiguration,委托方法将调用。

请帮助我了解我缺少什么。

谢谢,尼丁

0 投票
0 回答
223 浏览

objective-c - NSURLSessionUploadTask 和 API 调用

问题:

我正在构建一个照片组织/备份 iOS 应用程序,它需要将用户设备库中的照片上传到我们的服务器。

用户创建他的个人资料并登录到应用程序,并扫描他的图库中的图像。上传以多部分表单数据请求的形式分批进行,大约 10 个文件。在每批上传后,我需要对我们的服务器进行 api 调用以提交刚刚结束的上传。服务器还可以在处理之前提交的批次后进行自己的提交,例如根据图像内容创建相册等。如果发生这种情况,客户端在提交上传时会从服务器获得不同步的响应,并且它必须在提交上传之前首先获取服务器提交。随后计划上传下一批 10 张图像。

我为此目的使用 NSURLSessionUploadTask。当应用程序处于挂起状态时上传完成时,应用程序会被唤醒,我可能需要执行以下 1,2,3 或仅 2,3

  1. 获取服务器为之前提交的上传完成的提交
  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 批图像。

您能否指导我们分析这种情况,以便我为我们的应用程序提供后台上传解决方案。

再次感谢。

0 投票
1 回答
1639 浏览

ios - NSURLSession 任务执行顺序

我正在按顺序向 NSURLSession (background mode) 添加多个任务。我一直保持 HTTPMaximumConnectionsPerHost = 1。但是,我看到上传是按随机顺序进行的,即在第 1 项可能是第 5 项被拾取之后,然后是第 3 项等 - 上传不会按顺序发生我已经提供给 NSURLSession。有没有办法完全按照添加的方式订购上传?

0 投票
1 回答
435 浏览

ios - 当应用程序挂起时,我如何知道 NSURLSessionUploadTask 是否正在工作?

当我的应用程序在前台运行时,我会看到定期调用:NSURLSessionTaskDelegate -> URLSession:task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend:

当我的应用程序移动到后台并被挂起时,对该方法的调用停止,因此我没有关于 NSURLSessionUploadTask 是否继续上传的反馈。是否有任何技术可以获取有关上传的反馈?

0 投票
1 回答
604 浏览

ios - NSURLSessionUploadTask 响应内容数据为空

这是我到目前为止的地方NSURLSessionUploadTask

  • iOS 应用程序NSURLSessionUploadTask使用 POST启动
  • 服务器收到 HTTP POST 请求
  • 服务器读取请求的内容,以便上传数据
  • 服务器向 iOS 发送 HTTP 响应,其中包含以下内容:
  • iOS 应用程序接收响应并NSLogs通过NSURLSessionTaskDelegate -> URLSession:task:didCompleteWithError:
  • 但是,当我尝试NSLog响应内容时,该方法NSURLSessionTaskDelegate: -> URLSession:dataTask:didReceiveData:
  • 被称为我得到这个输出:
  • 奇怪的是,如果数据为空,响应不应该触发 if 语句块!
  • 我也有证据表明响应数据是通过 Wireshark 发送到 iOS 应用程序的。这是来自服务器的 HTTP 响应的数据包捕获: 线鲨

谁能告诉我为什么 iOS 似乎丢失了 HTTP 响应中的内容?

0 投票
1 回答
106 浏览

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:

0 投票
1 回答
446 浏览

ios - NSURLSession 和 Content-Type 的问题

我正在尝试将照片上传到网络服务,并且我正在使用以下代码:

我收到错误 500,我不知道该怎么做。

我尝试过实现 AFNetworking,附加身体数据,如ThisThisThis。然而,没有运气。

上面的代码来自 Ray Wenderlich 的网站:Here

我需要提供的服务器是这样的:

  1. 文件(图片)
  2. API 密钥(我尝试使用 NSMutableURLRequest's addValue:forHTTPHeaderField: 但它不起作用,所以我在 URL 中使用它。我知道这不是安全方面的最佳做法,但我越来越绝望了工作了 10 多个小时!一步一步!)
  3. Content-Type成为_multipart/form-data

这就是我需要提供的全部内容,但我却一无所获!

有人可以帮忙吗?

先感谢您

更新 1:所以我对 URL 结构进行了一些更改,并将 API 密钥作为字典添加到 HTTPBody 中,现在我收到错误 403。

苹果没有做出任何努力来序列化这部分连接,这似乎真的很奇怪。反正。我真的很感谢任何人的帮助!