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

ios - 在使用 NSURLSession 上传一些数据并且应用程序被暂停时,我应该如何保存数据?

我正在开发一个应用程序,我必须上传一个实体及其关系。(我认为这类似于 Dropbox 文件上传)该实体被调用PlaceEntity并与PictureEntity (to many). 我想在应用程序暂停NSURLSession时使用它来处理上传。所以,我正在做的是创建地点图片,然后启动它们。每次上传图片后,我都必须接收数据并将一些信息保存在. 上传所有图片后,我创建一个新任务并将该位置保存在服务器中。uploadTaskspictureEntity

我已经对其进行了测试,background and foreground一切正常。问题是当我暂停应用程序时。上传图片请求被执行(我知道,因为我用 Charles MAC OS 应用程序观看请求)当我必须core data在每次上传后更新信息时,就会出现问题。方法:

never 被调用,因为我的应用程序已完全退出。然后我无法更新 Core Data 或启动新请求。

任何想法??

谢谢

0 投票
0 回答
690 浏览

ios - NSURLSession后台上传完成方法重启后调用两次

我在后台模式下使用,使用 a 和委托回调NSURLSession从文件上传图像。NSURLSessionUploadTask如果应用程序保持在后台而不是被用户杀死,那么所有这些都可以正常工作。

但是,如果仍有待上传的内容,并且应用程序使用主屏幕被终止,一旦应用程序重新启动并且未上传的图像被重新排队作为具有相同背景标识符的新 NSURLSession 的上传任务,就会发生一些非常奇怪的事情:

1) 任务只创建一次,当发生这种情况时,我为它们分配了一个任务描述,还NSURLSession为它们分配了一个每个会话唯一的任务标识符。我的NSURLSession背景是单身人士。

2)任务几乎立即失败并出现此错误:

它调用完成委托方法:

通过上述错误。此时我打印出与我创建的任务匹配的任务标识符和任务描述。

3)在所有这些任务几乎立即失败之后,即当事情开始变得奇怪时,所有这些任务都以某种方式再次放入NSURLSession我的代码没有做任何事情,请注意,使用查尔斯我可以看到一个单一的请求出去,这实际上从未失败。这第二次他们成功了didCompleteWithError,这次他们再次调用,没有错误。此时打印任务描述和任务标识符,令人惊讶地返回我分配的相同任务描述,但任务标识符不同!。这意味着 iOS 以某种方式使用相同的任务标识符重新创建该任务并再次排队,即使它声称它失败了。请注意,网络请求只能在 Charles 中看到一次,并且永远不会真正失败

这是问题,因为我无法区分真正的上传错误和 iOS 生成的伪错误,现在因为我没有明确取消任何这些请求,我正在检查错误代码是否已取消,并选择忽略它,因为我知道任务会神奇地重新排队。这对我来说似乎是一个非常明显的错误,并且可以一直复制。

有了解决方法,一切都按预期工作,但这是一个 hack,我可以想象我可能会在某个时候忽略真正的取消,并且永远不会通知客户端请求实际上失败了。

我只在网上找到了几个人描述这个问题,但没有任何回应。

有为此申请的雷达吗?有什么办法可以防止这种情况发生吗?

我正在使用 8.1 SDK。

0 投票
1 回答
994 浏览

ios - NSURLSession 后台上传 - 需要启用后台模式?

我正在实例化 aNSURLSession来执行几个这样的后台上传:

在大多数情况下,一切似乎都正常,但我想知道如果我所做的只是后台上传而不是下载,是否需要在 p.list 中添加后台 Fetch 键?我找不到说明我应该或不应该的文件。特别是在 XCode 5 + 上,我想知道是否在 Capabilities>Background 模式下,我应该启用还是不启用后台获取,如果我所做的只是后台上传,请注意我确实在上传完成后阅读了响应,这可能被视为“下载”。

0 投票
2 回答
1003 浏览

ios - ios8:如何使用 NSURLSession 在后台上传 100 张照片?可用空间问题

照片应用程序如何在后台从 CameraRoll 上传所有内容?

我需要根据日期范围在后台上传 100 张照片。我的应用程序目前正在使用NSURLSession以下代码(我认为......)但要使其正常工作,我的任务调度程序必须将 JPG 复制到应用程序存储中的文件(请参阅:Background Upload With Stream Request Using NSUrlSession in iOS8)之前应用程序进入后台。对于 100 多张照片,这需要太多时间和存储空间。

有没有办法使用“流”方法,或者NSURLSession从后台可靠地安排额外的任务?我的开发人员说,可能在 iCloud 中的 CameraRoll 照片会导致后台调度失败。

0 投票
1 回答
375 浏览

ios - 有什么方法可以让 NSURLSession 同时运行 4 个以上的 NSURLSessionUploadTasks?

当我创建并启动 20 个 NSURLSessionUploadTasks 时,任何时候只有 3-4 个会运行,即使 HTTPMaximumConnectionsPerHost 设置为 20!

我知道我可以使用 HTTPMaximumConnectionsPerHost 轻松限制最大上传数量。但是,我想增加并发上传的数量。我已经开始“恢复”20 个新任务,但只有 3 或 4 个会同时运行。一批完成后,将再开始 3 或 4 批,直到所有任务都完成。这是不行的,因为我的服务器需要大量时间来处理每次上传,这意味着当我的服务器正在响应 POST 请求时,我并没有从用户的可用带宽中获得太多。

如何使 NSURLSession 运行到 HTTPMaximumConnectionsPerHost?HTTPMaximumConnectionsPerHost 可以很好地限制并发上传的数量,但无论为 HTTPMaximumConnectionsPerHost 设置的值如何,NSURLSession 似乎都会自行限制为 3 或 4。这意味着 HTTPMaximumConnectionsPerHost 只允许您在 1 到 4 个并发上传之间进行选择,而不是在 1 到 YOUR_MAX 并发上传之间进行选择!

需要明确的是,我的问题是,有没有办法使用 NSURLSessionUploadTask 同时运行 5 个或更多并发上传?

0 投票
0 回答
138 浏览

php - 向服务器发送数据和参数

我在这里有这段代码,可以将数据发送到我的服务器,这段代码运行良好:

正如我之前所说,这段代码效果很好,php文件是:

问题是我需要在 POST 方法中发送一些参数,如文件名、id 等,我尝试了很多方法来做到这一点,但我什么也做不了。

其他解决方案

那么我在想如何解决这个问题,我可以发送数据但不发送参数,我可以发送参数但不发送数据,但我不能在同一个请求中发送这两个。

在我的情况下,我需要将一个图像和这个图像的名称发送到我的服务器,所以第一个想法是将图像发送到我的服务器并显示该代码!

在 php 中,我得到这个文件,并为他生成一个随机和长名称,并将这个名称返回给 Objective-c。

当 Objective-c 收到这个响应时,他发送另一个请求,其中包含文件名和我们从服务器接收到的文件名。现在 PHP 接收到这个请求并用正确的名称更改文件的名称。

0 投票
0 回答
69 浏览

ios - 重用 NSURLUploadTask

我有以下代码来上传文件:

在第二次加载时,出现以下错误:

标识符为 <ID> 的后台 URLSession 已经存在!

我如何重复使用URLSession?

0 投票
1 回答
317 浏览

swift - 我应该在上传之前将 UIImage 保存到文件吗?

我正在 Swift 中实现一个照片上传器。

从 UIImagePickerController 获取 UIImage 后,我将调整图像的大小,可能小于 100 KB。

然后,我将使用 UIImageJPEGRepresentation() 将 UIImage 转换为数据。

然后我应该直接将生成的 NSData 上传到内存中吗?

或者,出于记忆的目的,我应该先将 NSData 存储到文件中,然后再上传文件吗?这样做会节省内存吗?

0 投票
0 回答
294 浏览

ios - 当应用程序进入后台时,后台会话中的 NSURLSessionUploadTask 失败并出现错误代码 -997

我有一个在后台会话中运行的 NSURLSessionUploadTask。它是一个包含少量数据并从服务器接收大量响应的 POST。当应用程序处于前台时,它工作正常。但是,一旦我将应用程序置于后台,我就会收到一个对委托的调用,错误为 NSURLErrorDomain,错误代码:-997“与后台服务的连接丢失”。

我在下载任务的上下文中看到了其他帖子中引用的此错误。

有人在上传任务中看到过这个错误吗?

上传正文比响应正文小得多的事实与这种行为有什么关系吗?

0 投票
2 回答
618 浏览

ios - 上传图片时出现问题

第 1 步:我在这里创建请求

第2步:在这里我在给定位置创建流

第3步:在这里我正在创建上传任务。

我的问题是在应用程序进入后台模式之前,我想HTTPBody使用步骤:1 和步骤:2 在给定位置写入所有请求(HTTPStream),并NSArray在写入所有HTTPStream文件(在应用程序前台中)意味着之后将所有请求保存到同时我将显示图像准备上传。

然后我将在 Step3 的帮助下开始创建后台任务:将请求传递给我已存储到NSArray. 使用这种方法,我无法上传图片。

但是如果我将所有步骤一个一个地调用,那么它将把图像上传到服务器上,但是通过这种方法,我的应用程序应该在前台进行创建请求,因为我们需要HTTPBody在给定位置编写。

请帮我解决这个问题,我从上周开始就被困在这个问题上。我的应用程序需要通过服务器上传超过 500 张图片。