2015-12-21 63 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

正如我在答案中解釋的那樣,寫入文件是更好的方法。特別是因爲你會處理很多照片。 –