问题标签 [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.
file-upload - 无法在 iOS 中使用 NSURLSession 多部分表单数据上传文件
我正在尝试使用- (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request fromFile:(NSURL *)fileURL;
使用多部分表单数据的方法上传视频/图像文件。但不知何故,我无法上传文件,我收到“ stream ended unexpectedly
”错误。
要求
- 将视频/图像文件上传到服务器
- 应用程序应支持后台上传(即使应用程序进入后台仍继续上传过程)
- 服务器期望使用多部分表单数据发送数据。
用于实现此目的的方法/API
NSURLSession 后台会话 API(下面列出的完整代码)
2.
- (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request fromFile:(NSURL *)fileURL
面临的挑战/问题
stream ended unexpectedly
每次我使用此 API 进行上传过程时都会遇到“ ”错误
需要注意的点
如果我使用相同的代码
NSURLConnection
而不是NSURLSession
.NSURLSession
后台上传过程需要文件位置 (NSURL
) 作为参数,不接受 NSData。它不允许我们NSData
在上传之前将文件转换为,即我们不能将 NSData 添加到文件正文中。
在以下几点上需要帮助
正在形成的多部分表单数据主体中是否有任何错误(注意 - 相同的代码正在使用 NSURLConnection)
我的方法哪里出错了?
我们是否需要在服务器级别进行任何更改以支持
NSURLSession backgroundSession
上传?(在数据解析或其他方面?)这是用于上传文件的代码
NSString *BoundaryConstant = @"----------V2ymHFg03ehbqgZCaKO6jy";
ios - NSURLSessionUploadTask 会保存临时文件吗
我正在实现一个可恢复的上传协议,该协议在 iOS 的后台上传,这意味着我必须使用NSURLSessionUploadTask
一个文件。由于它是一个可恢复的上传协议,文件需要根据服务器已经接收到的数据进行截断,所以我需要将一个新的临时文件保存到磁盘中,其中只有要上传的字节。
tmp/
如果我可以在or中创建该临时上传文件/Library/Caches/
,我可以相信只要 NSURLSession 正在运行,它就会被保留吗?
编辑:当上传失败时,服务器将保存它已经收到的字节并将其传送给客户端。然后客户端应该只发送文件的一部分,这就是为什么我需要创建一个较小的临时文件,不能在上传中删除。
ios - 由慢速 NSInputStream 传递的 NSURLSession 请求体(带宽管理)
嗨,根据这个答案,我写了子类,NSInputStream
它工作得很好。
现在事实证明,我有一个场景,我正在向服务器提供大量数据并防止其他服务饥饿,我需要控制提供数据的速度。因此,我通过以下条件改进了子类的功能:
- 当数据应该被推迟时,
hasBytesAvailable
返回NO
和读取尝试以读取的零字节结束 - 当可以发送数据时,
- read:maxLength:
允许一次读取一些最大数量的数据(默认为 2048)。 - 当
- read:maxLength:
返回读取的零字节时,计算所需的延迟并在延迟NSStreamEventHasBytesAvailable
事件发布之后。
这是代码的有趣部分(它与 C++ 混合):
我为此写了一些测试,它奏效了。
当我将此流NSURLSession
用作 HTTP 请求的正文源时出现问题。从日志中我可以看到它NSURLSession
试图一次读取所有内容。在第一次阅读时,我返回有限部分的数据。之后立即NSURLSession
询问是否有可用的字节(我返回NO
)。一段时间后(例如 170 毫秒),我发送通知说字节现在可用但NSURLSession
不响应并且不调用我的流类的任何方法。
这是我在日志中看到的(运行一些测试时):
其中时间是自流打开以来的毫秒数。
LooksNSURLSession
无法处理数据速率有限的输入流。还有其他人有类似的问题吗?或者有替代概念如何实现带宽管理NSURLSession
?
ios - 通过 POST 方法 ios 上传图片到服务器
我想通过 post 方法将图像上传到服务器。格式应该是["ImageName"=Image]
. 我尝试了以下代码,但它没有将图像上传到服务器。谁能帮我 ?
ios - 使用 NSURLSessionUploadTask fromFile,如何将 HTML 输入名称与正在上传的文件链接?
我想将文件从 iOS 设备上传到服务器。我想使用NSURLSessionUploadTask
并且我希望上传从文件中获取正在上传的文件的内容。
服务器期望接收一个名为“sightings.zip”的文件。
用于上传的HTML
表单包含一个名为“fileBean”的输入标签,如下所示:
我想我需要设置请求,以便它包含正确的“ Content-disposition
”信息:
但根据我能找到的示例、关于 so 的问题和 Apple 文档,我不知道如何做到这一点。
我的相关代码如下。
过去我使用过AFNetworking's
AFHTTPRequestSerializer
,它在您构建表单数据时提供输入名称,但由于其他原因这对我不起作用。
任何帮助,将不胜感激。
php - nsurlsession 将 label.text 值发布到 php 服务器执行并返回 JSON 值
我需要在我的应用程序流程中正确处理标签。我怎样才能做到这一点?步骤是
- 输入:纯文本标签
- 转换为小写
- 删除空格
- 发送到 PHP 服务器
- 在 SQL 中赋值给 $value
- 向服务器的数据库提交请求
- 输出:将结果(以 JSON 格式)返回到我的应用程序
目前的设计有11组,我根据点击的页面发送到不同的网址;我想扩展到 102 个组。
我认为可以使用 nsurlsession 发布我的 label.text(组名),将其发送到我的服务器,将其插入我的 SQL 代码,然后接收搜索结果。
- (IBAction)ShowModels:(id)sender {
}
在这些阶段我需要改变什么?
服务器端代码:
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 凭据是用于测试应用程序的。
ios - 多个视频上传进度
寻找例如带有进度视图的多个视频上传。在这里,我已经定义了步骤。
- 打开图库并选择视频。
- 从图库中选择视频,并在编译选择后创建拇指图像。
- 在表格视图或集合视图中显示带有缩略图的所有选定视频
- 在 Tableview 或 Collection 视图中显示视频上传过程的进度。
任何人都知道如何做到这一点,我会对我有所帮助。
可能我们可以使用 NSUrlsession 上传任务但无法实现。
ios - Objective-c 中的 NSURLSessionUploadTask 示例?
嗨,我NSURLSessionDataTask
在应用程序中用于后台 http 调用,如下所示,
但是,当我尝试 dataTaskWithRequest:request 时,我有 2 个服务器说https://demo.demosite.com和http://214.43.45.35/它不支持这两个服务器。我在这里读到 dataTaskWithRequest:request 不支持后台支持吗?
NSURLSessionUploadTask
应用程序未运行时在后台支持。任何人都可以分享NSURLSessionUploadTask
回调示例吗?
ios - NSURLSessionUploadTask 如何读取服务器响应
我正在使用NSURLSessionUploadTask上传文件。
这是我的代码的某些部分不完整
但问题是我无法获得服务器发回的 JSON 响应。
以下代表也没有解雇,但其他代表正在解雇
我正在使用的代码:
我已遵从代表
- NSURLSessionDataDelegate
- NSURLSessionDelegate
- NSURLSessionTaskDelegate
谢谢