Firebase - 在互联网离线时上传图片

时间:2016-08-08 06:59:07

标签: firebase firebase-storage

即使您处于脱机状态,Firebase也可以选择使用他们的数据库并将数据发送到他们的数据库,然后当连接再次启动时,它会自动将数据发送到数据库。

即使互联网关闭,也可以使用Firebase存储,例如发送图像,然后当互联网再次启动时,它会自动发送图像文件吗?

如果是这样,我该怎么办?如果没有使用Firebase,还有其他任何选项吗?

2 个答案:

答案 0 :(得分:10)

是。 Firebase存储客户端支持恢复上载。 有关上传的信息,请参阅Firebase存储文档(iOSWebAndroid)。

从那里开始Android:

uploadTask = mStorageRef.putFile(localFile);
sessionUri = uploadTask.getUploadSessionUri();
//save the sessionUri to persistent storage in case the process dies.

然后继续:

//resume the upload task from where it left off when the process died.
//to do this, pass the sessionUri as the last parameter
uploadTask = mStorageRef.putFile(localFile,
                new StorageMetadata.Builder().build(), sessionUri);

更新(20160809)

处理sessionUri的一种方法:

  1. 当您创建uploadTask时,请获取sessionUri并将其存储到应用SharedPreferences
  2. uploadTask完成后,从应用SharedPreferences中删除sessionUri。
  3. 当应用重新启动时,请检查sessionUri中是否有SharedPreferences。如果是这样:继续上传。

答案 1 :(得分:1)

从技术上讲,对于给定的OP问题,接受的答案是错误的

即使互联网关闭也发送图像

接受的答案是关于开始下载后恢复下载的信息,该下载内容虽然可以更正但不能正确解决答案。

正确的答案是“否”,如果设备未连接到Internet,则无法将图像上传到Firebase Firestore,上传将会失败,并且不会自动重启上传操作。

如前所述,您必须连接互联网,并且租期足够长才能开始上传并从Firebase获取uploadsessionuri URI。上传开始后,您可以继续上传using this sample code或上面的代码。

如文档中所述,简历URI的有效期约为7天,但是开发人员有责任确保自上传开始以来文件内容没有发生更改。