上传文件

更新时间: 2020-03-24

目录

简单文件上传

流式上传

带数据元及访问权限的上传

简单上传指的是使用OSS API中的PutObject方法上传单个文件(Object),本文主要介绍通过Java SDK进行简单上传。

简单上传分为文件上传和流式上传。

上传文件主要可以设置的属性有:

  • 元数据
  • 访问权限

简单文件上传

文件上传使用本地文件作为OSS文件的数据源。

以下代码用于简单文件上传:

// Endpoint以华北三为例,其它Region请按实际情况填写。
String endpoint = "oss.cn-north-3.inspurcloudoss.com";
String accessKey = "<yourAccessKey>";
String secretKey = "<yourSecretKey>";
String bucketName = "<yourBucketName>";
String key = "<yourObjectName>";
File file = new File("*** Provide object local address ***");

//创建OSSClient实例
OSSClientImpl ossClient = new OSSClientImpl(endpoint, accessKey, secretKey);

//简单文件上传
ossClient.putObject(bucketName, key, file);

流式上传

流式上传使用InputStream作为上传的数据源。

以下代码用于流式上传:

// Endpoint以华北三为例,其它Region请按实际情况填写。
String endpoint = "oss.cn-north-3.inspurcloudoss.com";
String accessKey = "<yourAccessKey>";
String secretKey = "<yourSecretKey>";
String bucketName = "<yourBucketName>";
String key = "<yourObjectName>";
final InputStream inputStream = new FileInputStream("*** Provide object local address ***");

//创建OSSClient实例
OSSClientImpl ossClient = new OSSClientImpl(endpoint, accessKey, secretKey);

//流上传
ossClient.putObject(bucketName, key, inputStream);

带数据元及访问权限的上传

以下代码用于带数据元及访问权限的上传

// Endpoint以华北三为例,其它Region请按实际情况填写。
String endpoint = "oss.cn-north-3.inspurcloudoss.com";
String accessKey = "<yourAccessKey>";
String secretKey = "<yourSecretKey>";
String bucketName = "<yourBucketName>";
String key1 = "<yourObjectName>";
String key2 = "<yourObjectName>";
File file = new File("*** Provide object local address ***");
final InputStream inputStream = new FileInputStream("*** Provide object local address ***");

//创建OSSClient实例
OSSClientImpl ossClient = new OSSClientImpl(endpoint, accessKey, secretKey);

//设置元数据
ObjectMetadata objectMetadata = new ObjectMetadata();
// 设置内容被下载时的编码格式。
objectMetadata.setContentEncoding("utf-8");
// 设置上传文件的长度。如超过此长度,则会被截断,为设置的长度。如不足,则为上传文件的实际长度。
objectMetadata.setContentLength(file.length());
// 指定上传的内容类型。内容类型决定浏览器将以什么形式、什么编码读取文件。如果没有指定则根据文件的扩展名生成,如果没有扩展名则为默认值application/octet-stream。
objectMetadata.setContentType("*** Provide your content type ***");

//带数据元的文件上传
ossClient.putObject(bucketName, key1, file, objectMetadata);
//带数据元及访问权限的文件上传
//ossClient.putObject(bucketName, key1, file, objectMetadata);

//带数据元的流上传
ossClient.putObject(bucketName, key2, inputStream, objectMetadata);
//带数据元及访问权限的流上传
//ossClient.putObject(bucketName, key2, inputStream, objectMetadata);