记一次使用阿里的_对象存储oss
阿里对象存储oss使用
- 因功能需要自己搭建图片服务器所以使用了oss
因功能需要自己搭建图片服务器所以使用了oss
前期准备购买开通–略
话不多说:看自己写的工具类
package com.jingpaidang.nxs.utils;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.OSSObject;
import com.aliyun.oss.model.OSSObjectSummary;
import com.aliyun.oss.model.ObjectListing;
import com.aliyun.oss.model.PutObjectResult;
import java.io.*;
/** * oss的工具类 * 教程:https://help.aliyun.com/document_detail/32011.html?spm=a2c4g.11186623.6.919.3b836e1dTdUyaS */
public class OSSUtil {
// Endpoint以杭州为例,其它Region请按实际情况填写。
public static final String endpoint = "https://oss-cn-beijing.aliyuncs.com";
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。
public static final String accessKeyId = "LT***********************B";
public static final String accessKeySecret = "N********************E";
public static final String bucketName = "m********e";
public static void main(String[] ages){
// 创建OSSClient实例。
// OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// // 创建存储空间。
// ossClient.createBucket(bucketName);
// // 关闭OSSClient。
// ossClient.shutdown();
// 上传文件到指定的存储空间(bucketName)并将其保存为指定的文件名称(objectName)。
String content = "Hello OSS";
// <yourObjectName>
//String objectName = "<yourObjectName>";//objectName 上传文件名
//ossClient.putObject(bucketName, objectName, new ByteArrayInputStream(content.getBytes()));
upload("test.txt",content.getBytes());
}
/** * 上传文件 * @param objectName 上传文件到OSS时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg。 * @param buf 二进制文件 */
public static void upload(String objectName,byte buf[]){
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
PutObjectResult rollback = ossClient.putObject(bucketName, objectName, new ByteArrayInputStream(buf));
// 关闭OSSClient。
ossClient.shutdown();
}
/** * 上传文件 * @param objectName 上传文件到OSS时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg。 * @param inputStream 输入流 */
public static void uploadByInputStream(String objectName,InputStream inputStream){
if(inputStream == null){
return;
}
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
PutObjectResult rollback = ossClient.putObject(bucketName, objectName, inputStream);
// 关闭OSSClient。
ossClient.shutdown();
}
/** * 文件下载 * @throws IOException io异常 */
public static void downloadFile(String objectName) throws IOException {
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 调用ossClient.getObject返回一个OSSObject实例,该实例包含文件内容及文件元信息。
OSSObject ossObject = ossClient.getObject(bucketName, objectName);
// 调用ossObject.getObjectContent获取文件输入流,可读取此输入流获取其内容。
InputStream content = ossObject.getObjectContent();
if (content != null) {
BufferedReader reader = new BufferedReader(new InputStreamReader(content));
while (true) {
String line = reader.readLine();
if (line == null) break;
System.out.println("\n" + line);
}
// 数据读取完成后,获取的流必须关闭,否则会造成连接泄漏,导致请求无连接可用,程序无法正常工作。
content.close();
}
// 关闭OSSClient。
ossClient.shutdown();
}
/** * 列举文件 * 以下代码用于列举指定存储空间下的文件。默认列举100个文件。 */
public static void listFile(){
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// ossClient.listObjects返回ObjectListing实例,包含此次listObject请求的返回结果。
ObjectListing objectListing = ossClient.listObjects(bucketName);
// objectListing.getObjectSummaries获取所有文件的描述信息。
for (OSSObjectSummary objectSummary : objectListing.getObjectSummaries()) {
System.out.println(" - " + objectSummary.getKey() + " " +
"(size = " + objectSummary.getSize() + ")");
}
// 关闭OSSClient。
ossClient.shutdown();
}
/** * 删除文件 */
public static void deleteFile(String objectName){
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 删除文件。
ossClient.deleteObject(bucketName, objectName);
// 关闭OSSClient。
ossClient.shutdown();
}
}
其它的就是自己引用了
还没有评论,来说两句吧...