您的位置:首页 > 其它

阿里云OSS(对象存储)的个人见解及使用方法

2017-09-14 14:02 316 查看
整理了一下阿里云的OSS(对象存储)相关的问题,记下来,以备后用。

·······································分·······································割·······································线·······································

介绍一下阿里云的OSS(对象存储)

能查到的官话就不在这里赘述了,按照我在使用过程中的实际体验来说,阿里的OSS我主要用来存储图片。

优点:

1、不占服务器内存;

2、图片压缩处理,访问页面事节省流量

3、可以对图片进行放大或缩小的无损处理(在我看来是无损,没有专业层面的评估,仅仅是视觉和体验上)。

4、图片格式处理

5、水印等一些小功能

6、样式可控并且很灵活,可以自由配置,下面有详细介绍。

缺点:

1、程序中文件上传OSS服务器时需要提供文件在服务器的路径,所以需要先上传到服务器上作为中转然后上传至阿里云服务器

2、阿里云OSS服务商存储的图片在微信端无法打开,QQ端报毒,原因大家懂的,不过可以处理,需要把图片访问的路径用域名映射掉,例如:
http:// Bucket名称.oss-cn-beijing.aliyuncs.com/XXX.png

上面的路径是无法在端打开的,这时需要用一个域名映射。

比如把http:// Bucket名称.oss-cn-beijing.aliyuncs.com/映射成”www.kakayu.cc”即可在微信端打开,QQ也不会报毒。

以上便是我对阿里云的OSS的一些薄见,欢迎拍砖

·······································分·······································割·······································线·······································

简述一下初始化设置方法:

1、在阿里云上开通OSS服务

2、新建一个Bucket即”文件存储的区域”可以用不同的Bucket来区分网站不同的业务,比如个人中心的头像之类的图片与商品详情的图片就可以用不同的Bucket区别开来。

3、上传您的图片或者文件访问生成的路径,看是否可以访问。

4、可以进行一些设置,例如Bucket的私有、共有化,根据具体需求

5、付费方式要搞灵清,包月或者按量付费有很大区别

6、如果在微信端或者腾讯旗下产品,请按照上面介绍的步骤来映射域名,如果有问题可以联系我

·······································分·······································割·······································线·······································

下面要上代码了呦!(o゚▽゚)o

假设我们现在需要上传一张图片到阿里云OSS服务器:

1、首先,需要把图片上传至服务器的一个路径

public String uploadFile(MultipartFile file,
HttpServletRequest request, Integer type) throws IOException {
// 获取当前时间 用于文件夹拼接
String date = TimeUtils.formatDate(new Date(), "yyyy-MM-dd");
// 拼接图片上传路径 留言所在路径为wanzigswx的BUCKET下wzgs下的的message文件夹之下
String oldPath = "bucketName" + "/" + "bucket之下的目标路径" + "/upload/"
+ date.replaceAll("-", "/") + "/items/";
// 创建路径
File filePath = new File(oldPath);
if (!filePath.exists() && !filePath.isDirectory()) {
filePath.mkdirs();
}
// 写入文件
String fileName = file.getOriginalFilename();
String newName = new Date().getTime()
+ fileName.substring(fileName.lastIndexOf("."));
// 保存阿里云时读取文件路径
File tempFile = new File(oldPath, newName);
if (!tempFile.getParentFile().exists()) {
tempFile.getParentFile().mkdir();
}
if (!tempFile.exists()) {
tempFile.createNewFile();
}
file.transferTo(tempFile);
FileUploadController fileUploadController = new FileUploadController();
boolean flag = fileUploadController.saveFile(file, request, oldPath,
newName, "bucket之下的目标路径");
if (flag) {
return "SUCCESS";
} else {
return "ERROR";
}
}


2、上传文件至阿里云OSS服务器

public boolean saveFile(MultipartFile file, HttpServletRequest request,
String oldPath, String newFileName, String typePath)
throws IOException {

String FILE_PATH = "linux下的绝对路径前缀" + oldPath;
String endpoint = "阿里云服务器例如华东二是:oss-cn-shenzhen.aliyuncs.com";
String accessKeyId = "accessKeyId";
String accessKeySecret = "accessKeySecret";
String fileName = file.getOriginalFilename();
String newName = "";
if (newFileName == null || "".equals(newFileName)) {
newName = new Date().getTime()
+ fileName.substring(fileName.lastIndexOf("."));
} else {
newName = newFileName;
}
// 创建OSSClient实例
// 保存阿里云时读取文件路径
OSSClient ossClient = new OSSClient(endpoint, accessKeyId,
accessKeySecret);
ossClient.putObject("bucketName", oldPath + newName, new File(FILE_PATH
+ newName));
// 关闭client
ossClient.shutdown();
//删除文件
if (deleteFile(FILE_PATH + newName)) {
System.out.println("文件上传成功!");
return true;
} else {
System.out.println("文件上传失败!");
}
return false;
}


可以吧在阿里云上保存的路径完整的保存进库里,在读取的时候直接读出路径即可,也可以保存关键信息,例如只保存bucket之下的完整路径。

个人建议只保存bucket之下的完整路径,因为这样比较灵活,可以无缝更换bucket,当预知当前账户出问题或者bucket出问题时,只需提前拷贝文件,便可实现无缝转移,如果保存完整的路径则需要处理大量数据。如果只保存bucket之后的路径,可以制定规则,例如模块化存储的bucket皆不相同,同时方面了对不同bucket的样式控制(下面有介绍),也便于管理和业务转向,并且有利于后期的数据维护。

至此,简单的上传已经完成,下面是读取方式:

想必大家看到这里应该有些明白了,只需把文件存储在OSS的路径放在网站上即可实现访问。事实既是如此,读取时主要需要处理只保存了部分数据的连接,拼接成完整的链接即可访问。

至此基本的上传和读取功能已经完毕,下面介绍图片处理功能:

准备工作:

在概览页中单击图片处理,单击新建样式,可以建多个,根据不同的业务需求而定,要分灵清每个CSS的名字对应的处理样式。

使用方式非常简单:

只需在拼接好的完整的访问路径之后加上参数即可,参数格式如下:

String newPath = "完整路径" + "?x-oss-process=style/"
+ "需要追加样式的名称,即在准备工作时创建的CSS名称";


至此,阿里云OSS(对象存储)便介绍完毕了,欢迎拍砖。(o゚▽゚)o
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  阿里云 存储 对象