2017-04-14 79 views
0

当试图从Drive导出文件为PDF流(来自gdoc)时,有时会得到一个空的InputStream字节数组(它看起来像是发生在大文件上,但是我无法确认!):Google Drive API在下载/导出文件时获取空的ByteArray

InputStream mediaContent = service.files().export(fileId, mimetype).executeMediaAsInputStream(); 
if(!(mediaContent.available()>0)) { 
    throw new IOException("Media content empty, bytes expected"); 
} 

不引发任何异常。我看不到文档中的任何指定限制(https://developers.google.com/drive/v3/web/manage-downloads)。有没有解决这个问题的方法?这是一个已知的问题吗?

驱动API:Java客户端版本V3-rev69-1.22.0

编辑

通过谷歌的OAuth 2.0游乐场通常要求的作品,但有时会失败,以及(由于没有我的意思它返回http代码200但是一个空的内容!)。 当使用断点续传媒体下载,我总是得到一个空的InputStream字节数组(1MB的块):

Drive.Files.Export request = service.files().export(fileId, mimetype); 
request.getMediaHttpDownloader().setProgressListener(new CustomProgressListener()); 
request.getMediaHttpDownloader().setChunkSize(Constants.CHUNK_SIZE); 
request.getMediaHttpDownloader().setDirectDownloadEnabled(false); 
InputStream mediaContent = request.executeMediaAsInputStream(); 

但它不抛出任何异常(返回码200以及)。有解决方案吗?

+0

该文件是否大于5MB? – noogui

+0

嗨noogui,谢谢你的回复。由于它是Google文档,因此Google云端硬盘中没有指定大小。如果我通过Drive UI将它下载为PDF,我会得到一个382 Ko的文件。 –

回答

1

如果有人遇到同样的问题:我创建了Google Cloud Support的凭单,他们发现尽管有200个回复代码,转换仍未成功完成。他们还提到,由于文档非常大(转换无法及时完成),超时转换失败。因此,他们建议将其转换为零件之前将文档拆分为零件的解决方法,直到他们修复了错误。

编辑

最后更新从谷歌支持:

工程师们仍然在调查这一问题,有一个分辨率没有ETA并没有显著取得进展。

+0

感谢您与社区分享您的发现和支持票的结果。有没有公​​开的问题,其他人可以按照获取更新?如果是这样,你可以在你的答案中发布链接吗? – Nicholas

+0

嗨尼古拉斯。据我所知,现在还没有公共问题。如果Google创建一个,我会更新此主题。 –

相关问题