Skip to content

Java上传文件至OSS

思核云OSS兼容Amazon S3,通过支持S3的SDK即可访问OSS。

使用OSS需要配置AccessKey,在思核云控制台点击头像→AccessKey管理→创建AccessKey,保存AccessKey。为了安全起见,您可以将这些凭据存储在您的环境变量中,或使用其他方式来管理这些凭据以防止它们被泄漏。

在使用OSS之前,需要在您的项目中安装AWS SDK for Java,例如Maven工程中,只需在pom.xml中加入相应依赖即可。在<dependencies>中加入如下内容:

xml
<dependency>
  <groupId>software.amazon.awssdk</groupId>
  <artifactId>s3</artifactId>
  <version>2.21.20</version>
</dependency>
<dependency>
  <groupId>software.amazon.awssdk</groupId>
  <artifactId>s3</artifactId>
  <version>2.21.20</version>
</dependency>

安装AWS SDK for Java后,就可以对OSS进行操作了,以下是Java8的样例代码。

java
import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
import software.amazon.awssdk.core.sync.RequestBody;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3.S3Client;
import software.amazon.awssdk.services.s3.model.PutObjectRequest;
import software.amazon.awssdk.services.s3.model.S3Exception;
import java.net.URI;

public class Demo {

    public static void main(String[] args) {
        // yourAccessKeyID填写AccessKey ID
        String accessKeyID = "yourAccessKeyID";
        // yourAccessKeySecret填写AccessKey Secret
        String accessKeySecret = "yourAccessKeySecret";
        // yourBucketName填写Bucket名称。
        String bucketName = "yourBucketName";

        String region = "jiaxing";
        String endpoint = "https://oss-jiaxing.sihe.cloud";
        String objectName = "sample.txt";

        S3Client s3Client = S3Client.builder()
            .endpointOverride(URI.create(endpoint))
            .credentialsProvider(StaticCredentialsProvider.create(AwsBasicCredentials.create(accessKeyID, accessKeySecret)))
            .region(Region.of(region))
            .build();

        try {
            PutObjectRequest putOb = PutObjectRequest.builder()
                .bucket(bucketName)
                .key(objectName)
                .build();

            s3Client.putObject(putOb, RequestBody.fromString("sample.text"));
            System.out.println(String.format("Successfully uploaded to %s/%s, you can check it from https://%s.oss-jiaxing.sihe.cloud/%s.\n",
                bucketName, objectName, bucketName, objectName));
        } catch (S3Exception e) {
            System.err.println(e.getMessage());
            System.exit(1);
        }
    }
}
import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
import software.amazon.awssdk.core.sync.RequestBody;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3.S3Client;
import software.amazon.awssdk.services.s3.model.PutObjectRequest;
import software.amazon.awssdk.services.s3.model.S3Exception;
import java.net.URI;

public class Demo {

    public static void main(String[] args) {
        // yourAccessKeyID填写AccessKey ID
        String accessKeyID = "yourAccessKeyID";
        // yourAccessKeySecret填写AccessKey Secret
        String accessKeySecret = "yourAccessKeySecret";
        // yourBucketName填写Bucket名称。
        String bucketName = "yourBucketName";

        String region = "jiaxing";
        String endpoint = "https://oss-jiaxing.sihe.cloud";
        String objectName = "sample.txt";

        S3Client s3Client = S3Client.builder()
            .endpointOverride(URI.create(endpoint))
            .credentialsProvider(StaticCredentialsProvider.create(AwsBasicCredentials.create(accessKeyID, accessKeySecret)))
            .region(Region.of(region))
            .build();

        try {
            PutObjectRequest putOb = PutObjectRequest.builder()
                .bucket(bucketName)
                .key(objectName)
                .build();

            s3Client.putObject(putOb, RequestBody.fromString("sample.text"));
            System.out.println(String.format("Successfully uploaded to %s/%s, you can check it from https://%s.oss-jiaxing.sihe.cloud/%s.\n",
                bucketName, objectName, bucketName, objectName));
        } catch (S3Exception e) {
            System.err.println(e.getMessage());
            System.exit(1);
        }
    }
}