OSS - 阿里云OSS对象存储简介及简单上传

OSS是一种分布式文件存储的一个不错选择,对象存储服务(Object Storage Service,OSS)是一种海量、安全、低成本、高可靠的云存储服务,适合存放任意类型的文件。

申请阿里OSS,创建Bucket

oss是收费的,每个bucket是一个存储空间,可以根据不同的项目创建不同的Bucket。

 入门示例

1、引入pom依赖

<dependency>
	<groupId>com.aliyun.oss</groupId>
	<artifactId>aliyun-sdk-oss</artifactId>
	<version>3.8.0</version>
</dependency>

2、代码测试

public class FileUpload {
	// 上传文件流的方式 - 常用
    public static void main(String[] args) throws FileNotFoundException {
        // Endpoint以成都为例,其它Region请按实际情况填写。
        String endpoint = "http://oss-cn-chengdu.aliyuncs.com";
        // 云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用RAM子账号进行API访问或日常运维
        String accessKeyId = "Xxxxxx";
        String accessKeySecret = "Aaaaaaaa";
        // 创建OSSClient实例
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
        // 上传文件流 - 文件地址
        InputStream inputStream = new FileInputStream("f:\\成果.jpg");
        // 存储BucketName、上传到OSS的文件名
        ossClient.putObject("liuchengyin", "狗哥.jpg", inputStream);
        // 关闭OSSClient
        ossClient.shutdown();
    }
}

 

使用Spring管理OSSClient

1、在Spring配置文件中添加如下

<!--阿里云OSS  -->
<bean id="ossClient" class="com.aliyun.oss.OSSClient">
	<!-- Endpoint以成都为例,其它Region请按实际情况填写 -->
	<constructor-arg index="0" value="oss-cn-chengdu.aliyuncs.com"></constructor-arg>
	<!-- AccessKeyID -->
	<constructor-arg index="1" value="AccessKeyID"></constructor-arg>
	<!-- AccessKeySecret -->
	<constructor-arg index="2" value="AccessKeySecret"></constructor-arg>
</bean>

2、上传后端代码示例

@Controller
public class uploadController{
	// 注入OSSClient
	@Autowired
	private OSSClient ossClient;

	/**
	 * 上传图片
	 * @param file 文件
	 * @param folder 文件所在文件夹名
	 */
	@PostMapping("/upload")
	public String ossUpload(@RequestParam("file") MultipartFile file,String folder){
		// BucketName
		String bucketName = "liuchengyin";
		// 获取原始的文件名
		String fileName = file.getOriginalFilename();
		// 使用UUID来处理文件名随机
		fileName = folder + "/" + UUID.randomUUID() + file.getOriginalFilename();
	
		try{
			ossClient.putObject(bucketName,fileName,file.getInputStream());
		}.cathc(Exception e){
			e.printStackTrace();
		}
		// 返回图片地址
		return "https://" + bucketName + ".oss-cn-chengdu.aliyuncs.com/" + fileName;
	}
}

发布了100 篇原创文章 · 获赞 25 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_40885085/article/details/104393769
oss