gpt4 book ai didi

java - Google Drive InputStreamContent 需要设置长度

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:56:17 24 4
gpt4 key购买 nike

将文件上传到 Google Drive 的示例通常使用 FileContent 类,这很容易理解并且可以按预期工作。

在我当前的例子中,我只公开了一个 InputStream,因为输入不一定来自文件。我尝试使用 InputStreamContent 类,但是如果未设置长度,则会抛出 IllegalArgumentException:

Exception in thread "main" java.lang.IllegalArgumentException
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:72)
at com.google.api.client.googleapis.media.MediaHttpUploader.getMediaContentLength(MediaHttpUploader.java:315)
at com.google.api.client.googleapis.media.MediaHttpUploader.executeUploadInitiation(MediaHttpUploader.java:333)
at com.google.api.client.googleapis.media.MediaHttpUploader.upload(MediaHttpUploader.java:252)
at com.google.api.services.drive.Drive$Files$Insert.executeUnparsed(Drive.java:309)
at com.google.api.services.drive.Drive$Files$Insert.execute(Drive.java:331)

虽然我也许可以将 InputStream 复制到一个字节数组中,然后从中获取大小,但这似乎不是最有效的方法。这是预期的实现吗? javadoc 没有指出需要设置该值,这似乎具有误导性:

/**
* Sets the content length or less than zero if not known.
*
* <p>
* Defaults to {@code -1}.
* </p>
*
* @since 1.5
*/
public InputStreamContent setLength(long length) {
this.length = length;
return this;
}

最佳答案

这是一个已知问题,详情如下: http://code.google.com/p/google-api-java-client/issues/detail?id=591

我们将在 1.12 google-api-java-client 版本中修复此问题。

关于java - Google Drive InputStreamContent 需要设置长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12063164/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com