简单上传
最近更新时间: 2024-06-12 15:06:00
适用场景
该操作适用于在单个请求中上传一个小于 5 GB 大小的对象,对于大于 5 GB 的对象,您必须使用分块上传的方式。
当您的对象较大(例如 100 MB)时,我们建议您在高带宽或弱网络环境中,优先使用分块上传的方式。
使用方法
使用 REST API
您可以直接使用 REST API 发起一个简单上传对象请求,可参考 PUT Object 文档说明。
使用 Java SDK
对象存储 COS 的 Java SDK 中提供了此方法,可参考 Java SDK 接口文档 PUT Object 部分 。
步骤说明
初始化客户端 cosclient。
执行 putObject 方法上传对象,支持将本地文件或者输入流上传到 COS。
代码示例
PutObjectRequest
封装了简单上传的请求,通过传入本地文件路径以及 COS 路径,支持设置存储类型,权限信息等,上传完成后会返回PutObjectResult
,失败抛出异常。示例代码如下:// 1 初始化用户身份信息(secretId, secretKey) COSCredentials cred = new BasicCOSCredentials("AKIDXXXXXXXX", "1A2Z3YYYYYYYYYY"); // 2 设置bucket的区域, COS地域的简称请参照 /document/product/436/6224 ClientConfig clientConfig = new ClientConfig(new Region("ap-beijing-1")); // 3 生成cos客户端 COSClient cosclient = new COSClient(cred, clientConfig); // bucket名需包含appid String bucketName = "mybucket-1251668577"; String key = "/aaa/bbb.txt"; File localFile = new File("src/test/resources/len10M.txt"); PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, localFile); // 设置存储类型, 默认是标准(Standard), 低频(standard_ia), 近线(nearline) putObjectRequest.setStorageClass(StorageClass.Standard_IA); try { PutObjectResult putObjectResult = cosclient.putObject(putObjectRequest); // putobjectResult会返回文件的etag String etag = putObjectResult.getETag(); } catch (CosServiceException e) { e.printStackTrace(); } catch (CosClientException e) { e.printStackTrace(); } // 关闭客户端 cosclient.shutdown();
PutObjectRequest
同时支持传入输入流,从流式上传到COS,但需要指定长度,示例代码如下所示:// 1 初始化用户身份信息(secretId, secretKey) COSCredentials cred = new BasicCOSCredentials("AKIDXXXXXXXX", "1A2Z3YYYYYYYYYY"); // 2 设置bucket的区域, COS地域的简称请参照 /document/product/436/6224 ClientConfig clientConfig = new ClientConfig(new Region("ap-beijing-1")); // 3 生成cos客户端 COSClient cosclient = new COSClient(cred, clientConfig); // bucket名需包含appid String bucketName = "mybucket-1251668577"; String key = "/aaa/bbb.txt"; File localFile = new File("src/test/resources/len10M.txt"); InputStream input = new ByteArrayInputStream(new byte[10]); ObjectMetadata objectMetadata = new ObjectMetadata(); // 从输入流上传必须制定content length, 否则http客户端可能会缓存所有数据,存在内存OOM的情况 objectMetadata.setContentLength(10); // 设置contenttype默认下载时根据cos路径key的后缀返回响应的contenttype, 上传时设置contenttype会覆盖默认值 objectMetadata.setContentType("image/jpeg"); PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, input, objectMetadata); // 设置存储类型, 默认是标准(Standard), 低频(standard_ia), 近线(nearline) putObjectRequest.setStorageClass(StorageClass.Standard_IA); try { PutObjectResult putObjectResult = cosclient.putObject(putObjectRequest); // putobjectResult会返回文件的etag String etag = putObjectResult.getETag(); } catch (CosServiceException e) { e.printStackTrace(); } catch (CosClientException e) { e.printStackTrace(); } // 关闭客户端 cosclient.shutdown();