问题标签 [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 投票
2 回答
7508 浏览

file-upload - 无法在 iOS 中使用 NSURLSession 多部分表单数据上传文件

我正在尝试使用- (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request fromFile:(NSURL *)fileURL; 使用多部分表单数据的方法上传视频/图像文件。但不知何故,我无法上传文件,我收到“ stream ended unexpectedly”错误。

要求

  1. 将视频/图像文件上传到服务器
  2. 应用程序应支持后台上传(即使应用程序进入后台仍继续上传过程)
  3. 服务器期望使用多部分表单数据发送数据。

用于实现此目的的方法/API

  1. NSURLSession 后台会话 API(下面列出的完整代码)

    2.- (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request fromFile:(NSURL *)fileURL

面临的挑战/问题

  1. stream ended unexpectedly每次我使用此 API 进行上传过程时都会遇到“ ”错误

需要注意的点

  1. 如果我使用相同的代码NSURLConnection而不是NSURLSession.

  2. NSURLSession后台上传过程需要文件位置 ( NSURL) 作为参数,不接受 NSData。它不允许我们NSData在上传之前将文件转换为,即我们不能将 NSData 添加到文件正文中。

在以下几点上需要帮助

  1. 正在形成的多部分表单数据主体中是否有任何错误(注意 - 相同的代码正在使用 NSURLConnection)

  2. 我的方法哪里出错了?

  3. 我们是否需要在服务器级别进行任何更改以支持NSURLSession backgroundSession上传?(在数据解析或其他方面?)

    这是用于上传文件的代码

NSString *BoundaryConstant = @"----------V2ymHFg03ehbqgZCaKO6jy";

0 投票
2 回答
390 浏览

ios - NSURLSessionUploadTask 会保存临时文件吗

我正在实现一个可恢复的上传协议,该协议在 iOS 的后台上传,这意味着我必须使用NSURLSessionUploadTask一个文件。由于它是一个可恢复的上传协议,文件需要根据服务器已经接收到的数据进行截断,所以我需要将一个新的临时文件保存到磁盘中,其中只有要上传的字节。

tmp/如果我可以在or中创建该临时上传文件/Library/Caches/,我可以相信只要 NSURLSession 正在运行,它就会被保留吗?

编辑:当上传失败时,服务器将保存它已经收到的字节并将其传送给客户端。然后客户端应该只发送文件的一部分,这就是为什么我需要创建一个较小的临时文件,不能在上传中删除。

0 投票
2 回答
365 浏览

ios - 由慢速 NSInputStream 传递的 NSURLSession 请求体(带宽管理)

嗨,根据这个答案,我写了子类,NSInputStream它工作得很好。

现在事实证明,我有一个场景,我正在向服务器提供大量数据并防止其他服务饥饿,我需要控制提供数据的速度。因此,我通过以下条件改进了子类的功能:

  • 当数据应该被推迟时,hasBytesAvailable返回NO和读取尝试以读取的零字节结束
  • 当可以发送数据时,- read:maxLength:允许一次读取一些最大数量的数据(默认为 2048)。
  • - read:maxLength:返回读取的零字节时,计算所需的延迟并在延迟NSStreamEventHasBytesAvailable事件发布之后。

这是代码的有趣部分(它与 C++ 混合):

我为此写了一些测试,它奏效了。

当我将此流NSURLSession用作 HTTP 请求的正文源时出现问题。从日志中我可以看到它NSURLSession试图一次读取所有内容。在第一次阅读时,我返回有限部分的数据。之后立即NSURLSession询问是否有可用的字节(我返回NO)。一段时间后(例如 170 毫秒),我发送通知说字节现在可用但NSURLSession不响应并且不调用我的流类的任何方法。

这是我在日志中看到的(运行一些测试时):

其中时间是自流打开以来的毫秒数。

LooksNSURLSession无法处理数据速率有限的输入流。还有其他人有类似的问题吗?或者有替代概念如何实现带宽管理NSURLSession

0 投票
1 回答
760 浏览

ios - 通过 POST 方法 ios 上传图片到服务器

我想通过 post 方法将图像上传到服务器。格式应该是["ImageName"=Image]. 我尝试了以下代码,但它没有将图像上传到服务器。谁能帮我 ?

0 投票
1 回答
337 浏览

ios - 使用 NSURLSessionUploadTask fromFile,如何将 HTML 输入名称与正在上传的文件链接?

我想将文件从 iOS 设备上传到服务器。我想使用NSURLSessionUploadTask并且我希望上传从文件中获取正在上传的文件的内容。

服务器期望接收一个名为“sightings.zip”的文件。

用于上传的HTML表单包含一个名为“fileBean”的输入标签,如下所示:

我想我需要设置请求,以便它包含正确的“ Content-disposition”信息:

但根据我能找到的示例、关于 so 的问题和 Apple 文档,我不知道如何做到这一点。

我的相关代码如下。

过去我使用过AFNetworking's AFHTTPRequestSerializer,它在您构建表单数据时提供输入名称,但由于其他原因这对我不起作用。

任何帮助,将不胜感激。

0 投票
0 回答
69 浏览

php - nsurlsession 将 label.text 值发布到 php 服务器执行并返回 JSON 值

我需要在我的应用程序流程中正确处理标签。我怎样才能做到这一点?步骤是

  • 输入:纯文本标签
  • 转换为小写
  • 删除空格
  • 发送到 PHP 服务器
  • 在 SQL 中赋值给 $value
  • 向服务器的数据库提交请求
  • 输出:将结果(以 JSON 格式)返回到我的应用程序

目前的设计有11组,我根据点击的页面发送到不同的网址;我想扩展到 102 个组。

我认为可以使用 nsurlsession 发布我的 label.text(组名),将其发送到我的服务器,将其插入我的 SQL 代码,然后接收搜索结果。

- (IBAction)ShowModels:(id)sender {

}

在这些阶段我需要改变什么?

服务器端代码:

0 投票
4 回答
12381 浏览

ios - URLSessionUploadTask 立即自动取消

我遇到了一个奇怪的问题,其中一个新创建URLSessionUploadTask的会立即被取消。我不确定这是否是当前 Xcode 8 测试版的错误。

我怀疑这可能是一个错误,因为我即将发布的代码恰好运行一次。之后没有对其进行任何更改,然后它就停止了工作。是的,它确实运行了一次,然后就停止了工作。我将在接近尾声时发布错误。

我将在下面发布代码,但首先我将总结这里的逻辑是如何工作的。

我的测试或用户公开的 API(用于 Playgrounds 或直接在应用程序上使用的 IE)调用该authorize方法。该authorize方法将依次调用buildPOSTTask,它将构造一个有效的 URL 并返回一个URLSessionUploadTask供该authorize方法使用的。

话虽如此,代码如下:

会议:

创建上传任务的函数:

身份验证函数,它使用由上述函数创建的任务:

我在测试中发现了这个错误:

它总是立即失败并出现此错误:

错误域=NSURLErrorDomain 代码=-999 “取消” UserInfo={NSErrorFailingURLKey= https://anilist.co/api/auth/access_token?client_secret=REMOVED&grant_type=authorization_code&redirect_uri=genericwebsitethatshouldtexist.bo&client_id=ibanez-hod6w&code=REMOVED,NSLocalizedDescription=cancelled, NSErrorFailingURLStringKey= https://anilist.co/api/auth/access_token?client_secret=REMOVED&grant_type=authorization_code&redirect_uri=genericwebsitethatshouldtexist.bo&client_id=ibanez-hod6w&code=REMOVED }

这里有几件事要记住:

  • 会话使用的 URL 有效。
  • 所有凭据均有效。
  • 它立即失败并出现“取消”错误,这在以前根本没有发生过。我没有在任何地方取消任务,所以它被系统取消了。
  • 在启用了无限期执行的 Playgrounds 上,它也会失败。这不仅限于我的测试。

这是我尝试过的事情的清单:

  • 因为我怀疑这是一个错误,所以我首先尝试清理我的项目,删除派生数据,并重置所有模拟器。他们都没有工作。
  • 甚至重新启动我的Mac...
  • 怀疑上传任务由于没有任何强指针而被释放,然后调用cancel,我还重写authorize以返回由创建的任务buildPOSTTask并将其分配给我的测试中的变量。任务仍然被取消。

我还没有尝试过的事情(但我会接受任何其他想法,因为我正在研究这些):

  • 在物理设备上运行它。目前在 iPad 上下载 iOS 10,因为这是一个 iOS 10 项目。编辑:我刚试过,这是不可能的。

我不知道该尝试什么。生成的日志似乎没有任何有用的信息。

编辑:

我决定在这里发布整个项目。无论如何,这东西完成后将是开源的,而我获得的 API 凭据是用于测试应用程序的。

ALCKit

0 投票
1 回答
544 浏览

ios - 多个视频上传进度

寻找例如带有进度视图的多个视频上传。在这里,我已经定义了步骤。

  1. 打开图库并选择视频。
  2. 从图库中选择视频,并在编译选择后创建拇指图像。
  3. 在表格视图或集合视图中显示带有缩略图的所有选定视频
  4. 在 Tableview 或 Collection 视图中显示视频上传过程的进度。

任何人都知道如何做到这一点,我会对我有所帮助。

可能我们可以使用 NSUrlsession 上传任务但无法实现。

0 投票
2 回答
3850 浏览

ios - Objective-c 中的 NSURLSessionUploadTask 示例?

嗨,我NSURLSessionDataTask在应用程序中用于后台 http 调用,如下所示,

但是,当我尝试 dataTaskWithRequest:request 时,我有 2 个服务器说https://demo.demosite.comhttp://214.43.45.35/它不支持这两个服务器。我在这里读到 dataTaskWithRequest:request 不支持后台支持吗?

NSURLSessionUploadTask应用程序未运行时在后台支持。任何人都可以分享NSURLSessionUploadTask回调示例吗?

0 投票
2 回答
1062 浏览

ios - NSURLSessionUploadTask 如何读取服务器响应

我正在使用NSURLSessionUploadTask上传文件。

这是我的代码的某些部分不完整

但问题是我无法获得服务器发回的 JSON 响应。

以下代表也没有解雇,但其他代表正在解雇

我正在使用的代码:

我已遵从代表

  1. NSURLSessionDataDelegate
  2. NSURLSessionDelegate
  3. NSURLSessionTaskDelegate

谢谢