|
@@ -12,10 +12,7 @@ import cn.reghao.oss.api.util.OssClientSigner;
|
|
|
import cn.reghao.oss.api.util.OssSamplingHash;
|
|
import cn.reghao.oss.api.util.OssSamplingHash;
|
|
|
import com.google.gson.reflect.TypeToken;
|
|
import com.google.gson.reflect.TypeToken;
|
|
|
|
|
|
|
|
-import java.io.ByteArrayInputStream;
|
|
|
|
|
-import java.io.File;
|
|
|
|
|
-import java.io.FileInputStream;
|
|
|
|
|
-import java.io.FileNotFoundException;
|
|
|
|
|
|
|
+import java.io.*;
|
|
|
import java.lang.reflect.Type;
|
|
import java.lang.reflect.Type;
|
|
|
import java.net.URI;
|
|
import java.net.URI;
|
|
|
import java.net.http.HttpClient;
|
|
import java.net.http.HttpClient;
|
|
@@ -40,6 +37,7 @@ public class OssClient {
|
|
|
public OssClient(String endpoint, String ak, String sk) {
|
|
public OssClient(String endpoint, String ak, String sk) {
|
|
|
this.httpClient = HttpClient.newBuilder()
|
|
this.httpClient = HttpClient.newBuilder()
|
|
|
.version(HttpClient.Version.HTTP_1_1) // Netty 常用 1.1
|
|
.version(HttpClient.Version.HTTP_1_1) // Netty 常用 1.1
|
|
|
|
|
+ .connectTimeout(Duration.ofMinutes(10))
|
|
|
.build();
|
|
.build();
|
|
|
this.endpoint = endpoint;
|
|
this.endpoint = endpoint;
|
|
|
this.ak = ak;
|
|
this.ak = ak;
|
|
@@ -326,7 +324,7 @@ public class OssClient {
|
|
|
.header("Date", gmtDate)
|
|
.header("Date", gmtDate)
|
|
|
.header("Authorization", authHeader)
|
|
.header("Authorization", authHeader)
|
|
|
.header("Content-Type", contentType)
|
|
.header("Content-Type", contentType)
|
|
|
- .timeout(Duration.ofSeconds(10))
|
|
|
|
|
|
|
+ .timeout(Duration.ofMinutes(10))
|
|
|
.GET()
|
|
.GET()
|
|
|
.build();
|
|
.build();
|
|
|
|
|
|
|
@@ -365,7 +363,7 @@ public class OssClient {
|
|
|
.header("Date", gmtDate)
|
|
.header("Date", gmtDate)
|
|
|
.header("Authorization", authHeader)
|
|
.header("Authorization", authHeader)
|
|
|
.header("Content-Type", contentType)
|
|
.header("Content-Type", contentType)
|
|
|
- .timeout(Duration.ofSeconds(10))
|
|
|
|
|
|
|
+ .timeout(Duration.ofMinutes(10))
|
|
|
.GET()
|
|
.GET()
|
|
|
.build();
|
|
.build();
|
|
|
|
|
|
|
@@ -385,7 +383,7 @@ public class OssClient {
|
|
|
String clientSha256sum = OssSamplingHash.calculateFullHash(file.toPath());
|
|
String clientSha256sum = OssSamplingHash.calculateFullHash(file.toPath());
|
|
|
HttpRequest request = HttpRequest.newBuilder()
|
|
HttpRequest request = HttpRequest.newBuilder()
|
|
|
.uri(URI.create(uploadUrl))
|
|
.uri(URI.create(uploadUrl))
|
|
|
- .timeout(Duration.ofMinutes(5))
|
|
|
|
|
|
|
+ .timeout(Duration.ofMinutes(10))
|
|
|
.HEAD()
|
|
.HEAD()
|
|
|
.header("Authorization", "Bearer " + uploadToken)
|
|
.header("Authorization", "Bearer " + uploadToken)
|
|
|
.header("X-Sha256-Sum", clientSha256sum)
|
|
.header("X-Sha256-Sum", clientSha256sum)
|
|
@@ -442,7 +440,7 @@ public class OssClient {
|
|
|
// 1. 构建 PUT 请求
|
|
// 1. 构建 PUT 请求
|
|
|
HttpRequest request = HttpRequest.newBuilder()
|
|
HttpRequest request = HttpRequest.newBuilder()
|
|
|
.uri(URI.create(uploadUrl))
|
|
.uri(URI.create(uploadUrl))
|
|
|
- .timeout(Duration.ofMinutes(5)) // 根据大文件调整超时时间
|
|
|
|
|
|
|
+ .timeout(Duration.ofMinutes(10)) // 根据大文件调整超时时间
|
|
|
// 核心:直接传入 Path,HttpClient 会在底层执行零内存占用的流式读取
|
|
// 核心:直接传入 Path,HttpClient 会在底层执行零内存占用的流式读取
|
|
|
.PUT(HttpRequest.BodyPublishers.ofFile(path))
|
|
.PUT(HttpRequest.BodyPublishers.ofFile(path))
|
|
|
.header("Authorization", "Bearer " + uploadToken)
|
|
.header("Authorization", "Bearer " + uploadToken)
|