Google cloud storage 将大文件上载到google云存储时超时

Google cloud storage 将大文件上载到google云存储时超时,google-cloud-storage,Google Cloud Storage,我无法将大型文件上传到谷歌云存储。我成功上传了一个700MB的文件,但是当我尝试5GB的文本文件时,它抛出了以下异常。我无法通过谷歌搜索找到解决方案 问题在于一个简单java类的主方法 Exception in thread "main" java.lang.RuntimeException: java.net.SocketTimeoutException: Read timed out Caused by: java.net.SocketTimeoutException: Read time

我无法将大型文件上传到谷歌云存储。我成功上传了一个700MB的文件,但是当我尝试5GB的文本文件时,它抛出了以下异常。我无法通过谷歌搜索找到解决方案

问题在于一个简单java类的主方法

Exception in thread "main" java.lang.RuntimeException: java.net.SocketTimeoutException: Read timed out

Caused by: java.net.SocketTimeoutException: Read timed out
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.read(SocketInputStream.java:150)
    at java.net.SocketInputStream.read(SocketInputStream.java:121)
    at sun.security.ssl.InputRecord.readFully(InputRecord.java:312)
    at sun.security.ssl.InputRecord.read(InputRecord.java:350)
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:893)
    at sun.security.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:850)
......

看起来您可能需要提高连接超时设置。该链接适用于android,但同样适用,并且实现方式完全相同。

对于较大的文件,尤其是在移动设备和无线连接上,您的上传更可能因连接中断而中断。解决这个问题的办法是让你的上传能够抵抗断开的连接。谷歌云存储使用一种叫做。您需要使用此技术,以便应用程序能够从网络问题中恢复

在Java SDK中,我们可以选择更改连接超时并重试

HttpTransportOptions transportOptions = StorageOptions.getDefaultHttpTransportOptions();
            transportOptions = transportOptions.toBuilder().setConnectTimeout(60000).setReadTimeout(60000)
                    .build();
var storage = StorageOptions.newBuilder()
    .setRetrySettings(RetrySettings.newBuilder().setMaxAttempts(2).build())
    .setTransportOptions(transportOptions)
    .setProjectId("project_id").build().getService();

在google云存储的java客户端库中,没有设置连接超时长度的位置。storage.Objects.Insert insertObject=storage.Objects().Insert(bucketName、objectMetadata、mediaContent);insertObject.execute();似乎没有设置超时的地方。它使用了可恢复的上载。默认情况下,它是可恢复上载的。