我意识到之前已经问过similar questions。然而,他们都没有得到回答。
我的问题如下:
要将文件上传到Google云端硬盘,您需要创建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());
现在这是问题启动的地方:填写此OutputStream
, Google Play服务只需复制我要上传的文件并创建本地副本。如果手机上有0.5 GB的可用空间,并且您想要上传1.3 GB的文件,则无法使用!没有足够的存储空间。
那怎么办?有没有办法通过GDAA直接上传到Google云端硬盘,而不是首先创建本地副本,然后上传它?
Google REST API是否可以处理这些上传内容?可以通过Google REST API完成吗?
修改 看来这不能通过GDAA来完成。对于想要使用Google REST API进行可恢复上传的方式的人,请查看my example here on StackOverflow。
答案 0 :(得分:1)
我不确定是否可以,但您肯定可以尝试使用Google REST API上传文件。
您可以使用Multipart upload或Resumable upload:
分段上传
- 如果您要将元数据与要上传的数据一起发送,则可以生成单个多部分/相关请求。如果您发送的数据足够小,可以在连接失败时再次完整上传,这是一个不错的选择。
可恢复上传
- 要更可靠地上传数据文件,您可以使用可恢复的上传协议。此协议允许您在通信故障中断数据流后恢复上载操作。如果您要传输大文件并且网络中断或其他传输故障的可能性很高(例如,从移动客户端应用程序上载时),此功能尤其有用。它还可以在网络出现故障时减少您的带宽使用,因为您不必从头开始重新启动大型文件上传。
您必须记住,如SO question中所述:
最后,您可以在android中检查有关令牌和身份验证的相关SO question。 seanpj还有一些可能对你有帮助的GDAA和REST api的例子。
希望这有帮助。