【问题标题】:Upload of Large Files to Google Drive with the Google Drive API for Android (GDAA)使用适用于 Android 的 Google Drive API (GDAA) 将大文件上传到 Google Drive
【发布时间】:2017-02-17 22:09:02
【问题描述】:

我知道similar questions 之前有人问过。然而,他们都没有得到答复。

我的问题如下:

要将文件上传到 Google Drive,您需要创建 DriveContents

您可以通过凭空创造它们来做到这一点:

DriveApi.DriveContentsResult driveContentsResult = Drive.DriveApi.newDriveContents(getGoogleApiClient()).await();
DriveContents contents = driveContentsResult.getDriveContents();

或者你通过打开一个已经存在的文件来做到这一点:

DriveApi.DriveContentsResult driveContentsResult = driveFileResult.getDriveFile().open(getGoogleApiClient(), DriveFile.MODE_WRITE_ONLY, null).await();
DriveContents contents = driveContentsResult.getDriveContents();

您现在可以用数据填充DriveContents。您可以通过获取OutputStream 并写信给OutputStream 来做到这一点:

FileOutputStream fileOutputStream = new FileOutputStream(driveContentsResult.getDriveContents().getParcelFileDescriptor().getFileDescriptor());

现在问题从这里开始:填写此OutputStreamGoogle Play 服务只需复制我要上传的文件并创建本地副本。如果您的手机上有 0.5 GB 的可用空间,并且您想上传 1.3 GB 的文件,那么这是行不通的!存储空间不足。

那么它是如何完成的呢?有没有办法通过 GDAA 直接上传到 Google Drive,而不需要先创建本地副本,然后再上传?

Google REST API 处理这些上传有什么不同吗?可以通过 Google REST API 完成吗?

编辑: 这似乎无法通过 GDAA 完成。对于寻找使用 Google REST API 进行可恢复上传的方法的人,请查看my example here on StackOverflow

【问题讨论】:

    标签: google-drive-android-api


    【解决方案1】:

    我不确定它是否可以,但您当然可以尝试使用 Google REST API 上传您的文件。

    您可以使用Multipart uploadResumable upload

    分段上传

    • 如果您有要与要上传的数据一起发送的元数据,您可以发出单个多部分/相关请求。如果您发送的数据足够小,可以在连接失败时再次完整上传,这是一个不错的选择。

    可恢复上传

    • 为了更可靠地上传数据文件,您可以使用可恢复上传协议。此协议允许您在通信故障中断数据流后恢复上传操作。如果您正在传输大文件并且网络中断或其他传输失败的可能性很高,例如从移动客户端应用程序上传时,它特别有用。它还可以在发生网络故障时减少您的带宽使用量,因为您不必从头开始重新上传大文件。

    您必须记住SO question 中的讨论:

    1. GDAA 的主要标识符 DriveId 仅存在于 GDAA (GooPlaySvcs) 中,不存在于 REST Api 中。
    2. 只有在 GDAA 提交(上传)文件/文件夹后,才能从 DriveId 中获取 ResourceId)
    3. 您会遇到很多时间问题,因为 GDAA 按自己的计划“缓冲”网络请求(系统优化),而 REST Api 让您的应用控制等待响应的时间。

    最后,您可以检查这个相关的SO question 关于 android 中 HTTP 请求中的令牌和身份验证。对于 GDAAREST api,seanpj 也提供了一些示例,它们可能会对您有所帮助。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      • 2020-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-06
      相关资源
      最近更新 更多