2015-12-21 42 views
-6

我想用NSURLSession上传照片到云端服务器(如OneDrive),我希望应用程序可以在后台工作。用NSURLSession在后台上传照片

NSURLSession只支持“FROMFILE”而不是“fromData”在后台模式,我不知道怎么弄的照片NSURL,所以我照片的数据写入到文件...

我认为这不是一个好方法。

+0

你能否提供一些你想要做的事例? –

+0

@BellAppLab感谢您的评论!总之,我想使用API​​:' - (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)请求 fromFile:(NSURL *)fileURL',但我不知道如何从Photos框架获取fileURL。 –

+0

你不能获取数据并将其写入文件吗? –

回答

0

从上面的评论看来,您似乎一次可以上传多张照片,对于“fromData”方法并不是似乎是个不错的主意。

首先,高分辨率的照片有几兆字节的大小。如果您将5mb的照片加载到内存中,使用NSData,则可能是好的。但是加载10张照片就意味着你需要50mb的内存来保存它们。其次,上传大块数据,例如照片,也是一项计算密集型任务。你绝对不应该试图同时上传它们。这意味着你将不得不建立一个上传队列,只有在最后一个完成后才开始上传下一张照片。如果互联网连接在整个过程中丢失,那么会发生什么?如果用户突然关闭应用程序会发生什么?

因此,我建议你抓住所有图像的数据并将它们写入某个临时文件夹。然后,您开始上传过程,该过程会在临时文件夹中找到一个文件,将其上传,并在上传成功完成后将其删除,然后重新开始下一个文件。

通过这种方式,您可以最大限度地减少应用程序的内存占用量,使其面对应用程序可能面临的诸多困难(无需互联网连接,被用户过早关闭等),并且还能够遵守提供给您的API。

+0

感谢您的回答,实际上我想开发一款照片备份应用程序,所以我需要将手机中的所有照片上传到云服务器。我的困惑是为什么我应该抓取照片数据并将它们写入文件?我期待着更好的方式。 –

+0

正如我在答案中解释的那样,写入文件是更好的方法。特别是因为你会处理很多照片。 –