阿里云服务(一) OSS
阿里电子商务迄今是中国最大的电商网站,各个厂商都在去模仿。就像google的大数据处理,Hadoop的思想等等,只有做出了一些成绩,起了带头羊,那么将会是非常吃香的。从今天开始简单学习了解一下阿里的各种云服务。今天先看一下OSS。
OSS(Open Storage Service)开放云存储服务,是阿里云对外的提供的海量,安全和高可靠的云存储服务。目前阿里的所有云服务都是收费,大家可以到官网上了解:http://www.aliyun.com/product/oss
OSS,通俗一点理解就像是一块硬盘用来存储东西呢,只不过,它是由很多服务器,通过类似负载均衡,raid等各种技术,搭建起来的云存储,类似我们经常使用的百度云盘,360云盘等。我们可以将我们服务,数据存放上去,方便,安全,实现云。好了,简单来说,OSS,既然是存储东西用的,我们就需要学会像类似IO流对电脑硬盘操作一样,学习一下对OSS云存储的上传,删除等操作。
首先是开通OSS服务器后,会有endpoint,跟地址;accessKeyId,类似用户名;accessKeySecret,类似密码;buketName:第一层文件夹的名字,一个用户可以创建十个bucketName,类似于我们的C,D,E,F盘符;accessUrl,很明显用户可以通过浏览器访问的地址。例如我们上传一个html文件,我们就可以通过"accessUrl/bucketName/目录/文件名.html,来进行访问。我在这里负责一个是页面静态化的功能,将动态的JSP页面生成静态的html页面,然后上传的OSS服务器,返回地址,让用户直接访问静态页面,这样就大大加快访问的速度。 这里突然想到一点不沾边的话语“物极必反,否极泰来”,最开始是单纯的静态页面,我们一直追求动态页面,现在又需要转会到静态页面,各有各的好处,所以技术这东西,没有一个好与不好,只是针对方面不同而已了。
好,首先需要我们创建一个OSS信息实体类,OSSConfigure.Java:
- import java.io.IOException;
- import java.util.Properties;
- public class OSSConfigure {
- private String endpoint;
- private String accessKeyId;
- private String accessKeySecret;
- private String bucketName;
- private String accessUrl;
- public OSSConfigure() {
- }
- /**
- * 通过配置文件.properties文件获取,这几项内容。
- *
- * @param storageConfName
- * @throws IOException
- */
- public OSSConfigure(String storageConfName) throws IOException {
- Properties prop = new Properties();
- prop.load(this.getClass().getClassLoader()
- .getResourceAsStream("conf/" + storageConfName));
- endpoint = prop.getProperty("endpoint").trim();
- accessKeyId = prop.getProperty("accessKeyId").trim();
- accessKeySecret = prop.getProperty("accessKeySecret").trim();
- bucketName = prop.getProperty("bucketName").trim();
- accessUrl = prop.getProperty("accessUrl").trim();
- }
- public OSSConfigure(String endpoint, String accessKeyId,
- String accessKeySecret, String bucketName, String accessUrl) {
- this.endpoint = endpoint;
- this.accessKeyId = accessKeyId;
- this.accessKeySecret = accessKeySecret;
- this.bucketName = bucketName;
- this.accessUrl = accessUrl;
- }
- public String getEndpoint() {
- return endpoint;
- }
- public void setEndpoint(String endpoint) {
- this.endpoint = endpoint;
- }
- public String getAccessKeyId() {
- return accessKeyId;
- }
- public void setAccessKeyId(String accessKeyId) {
- this.accessKeyId = accessKeyId;
- }
- public String getAccessKeySecret() {
- return accessKeySecret;
- }
- public void setAccessKeySecret(String accessKeySecret) {
- this.accessKeySecret = accessKeySecret;
- }
- public String getBucketName() {
- return bucketName;
- }
- public void setBucketName(String bucketName) {
- this.bucketName = bucketName;
- }
- public String getAccessUrl() {
- return accessUrl;
- }
- public void setAccessUrl(String accessUrl) {
- this.accessUrl = accessUrl;
- }
- }
然后是一个工具类,这里需要提出的OSS服务器,上所有的都是对象,没有文件夹的概念,上传文件,直接写好路劲,他会自动创建。另外这里有一个入口OSSClient,很多方法都是通过它来实现的,类似于门面模式吧:
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileNotFoundException;
- import java.io.InputStream;
- import org.springframework.web.multipart.MultipartFile;
- import com.aliyun.oss.OSSClient;
- import com.aliyun.oss.model.ObjectListing;
- import com.aliyun.oss.model.ObjectMetadata;
- /**
- * 对OSS服务器进行上传删除等的处理
- * @ClassName: OSSManageUtil
- * @Description:
- * @author liujh
- * @date 2015-3-26 上午10:47:00
- *
- */
- public class OSSManageUtil {
- /**
- * 上传OSS服务器文件
- * @Title: uploadFile
- * @Description:
- * @param @param ossConfigure
- * @param @param file
- * @param @param remotePath
- * @param @return
- * @param @throws Exception 设定文件
- * @return String 返回类型
- * @throws
- */
- public static String uploadFile(OSSConfigure ossConfigure,File file,String remotePath) throws Exception{
- InputStream fileContent=null;
- fileContent=new FileInputStream(file);
- OSSClient ossClient=new OSSClient(ossConfigure.getEndpoint(), ossConfigure.getAccessKeyId(), ossConfigure.getAccessKeySecret());
- String remoteFilePath = remotePath.substring(0, remotePath.length()).replaceAll("\\\\","/")+"/";
- //创建上传Object的Metadata
- ObjectMetadata objectMetadata=new ObjectMetadata();
- objectMetadata.setContentLength(fileContent.available());
- objectMetadata.setCacheControl("no-cache");
- objectMetadata.setHeader("Pragma", "no-cache");
- objectMetadata.setContentType(contentType(file.getName().substring(file.getName().lastIndexOf("."))));
- objectMetadata.setContentDisposition("inline;filename=" + file.getName());
- //上传文件
- ossClient.putObject(ossConfigure.getBucketName(), remoteFilePath + file.getName(), fileContent, objectMetadata);
- System.out.println(ossConfigure.getAccessUrl()+"/" +remoteFilePath + file.getName());
- return ossConfigure.getAccessUrl()+"/" +remoteFilePath + file.getName();
- }
- /**
- * 根据key删除OSS服务器上的文件
- * @Title: deleteFile
- * @Description:
- * @param @param ossConfigure
- * @param @param filePath 设定文件
- * @return void 返回类型
- * @throws
- */
- public static void deleteFile(OSSConfigure ossConfigure,String filePath){
- OSSClient ossClient = new OSSClient(ossConfigure.getEndpoint(),ossConfigure.getAccessKeyId(), ossConfigure.getAccessKeySecret());
- ossClient.deleteObject(ossConfigure.getBucketName(), filePath);
- }
- /**
- * Description: 判断OSS服务文件上传时文件的contentType
- * @Version1.0
- * @param FilenameExtension 文件后缀
- * @return String
- */
- public static String contentType(String FilenameExtension){
- if(FilenameExtension.equals("BMP")||FilenameExtension.equals("bmp")){return "image/bmp";}
- if(FilenameExtension.equals("GIF")||FilenameExtension.equals("gif")){return "image/gif";}
- if(FilenameExtension.equals("JPEG")||FilenameExtension.equals("jpeg")||
- FilenameExtension.equals("JPG")||FilenameExtension.equals("jpg")||
- FilenameExtension.equals("PNG")||FilenameExtension.equals("png")){return "image/jpeg";}
- if(FilenameExtension.equals("HTML")||FilenameExtension.equals("html")){return "text/html";}
- if(FilenameExtension.equals("TXT")||FilenameExtension.equals("txt")){return "text/plain";}
- if(FilenameExtension.equals("VSD")||FilenameExtension.equals("vsd")){return "application/vnd.visio";}
- if(FilenameExtension.equals("PPTX")||FilenameExtension.equals("pptx")||
- FilenameExtension.equals("PPT")||FilenameExtension.equals("ppt")){return "application/vnd.ms-powerpoint";}
- if(FilenameExtension.equals("DOCX")||FilenameExtension.equals("docx")||
- FilenameExtension.equals("DOC")||FilenameExtension.equals("doc")){return "application/msword";}
- if(FilenameExtension.equals("XML")||FilenameExtension.equals("xml")){return "text/xml";}
- return "text/html";
- }
- }
当然这里仅仅写了两个通用方法,我们可以在官网上下载对应的API,来进行查询学习,其实挺简单的。
阿里云服务(一) OSS的更多相关文章
- 2018.10.9 上线发现elasticsearch写入速度超级慢,原来罪魁祸首是阿里云服务的OSS的锅
问题描述: 按照项目计划,今天上线部署日志系统(收集线上的所有日志,便于问题排查). 运维按照以前的部署过程,部署elasticsearch,部署结束之后,通过x-pack的monitor发现elas ...
- 阿里云对象存储OSS与文件存储NAS的区别
一.简介 应用场景:选择一款存储产品,面向文档数据的存取,不会涉及到数据处理. 产品选型主要从OSS和NAS中选择一款,满足文档存储的需求. 二.NAS优缺点 NAS 是一种采用直接与网络介质相连的特 ...
- 阿里云对象存储OSS使用 HTTPS
一.前言 阿里云对象存储oss本身也是可以用HTTPS直接访问的,但是它本身的地址是http://***.oss-cn-hangzhou.aliyuncs.com这样的,那么如果我们想使用自己的域名, ...
- 阿里云对象存储OSS
阿里云的产品种类繁多,今天让我们一起来了解下对象存储(Object Storage Service,简称OSS)吧! 什么是对象存储呢? 简单来说,对象存储OSS是阿里云提供的海量.安全和高可靠的云存 ...
- 阿里云对象存储OSS及CDN加速配置
目录 十大云存储服务商 1. 登陆阿里云官网,开通对象存储服务 OSS 2. 创建存储空间 3. 绑定自定义域名 4. 配置阿里云CDN加速 5. 购买阿里云免费SSL证书 6. 阿里云CDN配置HT ...
- 阿里云对象存储OSS访问控制
阿里云对象存储OSS的Android SDK提供了STS鉴权模式和自签名模式来保障移动终端的安全性. OSS可以通过阿里云STS (Security Token Service) 进行临时授权访问.交 ...
- Delphi阿里云对象存储OSS【支持上传文件、下载文件、删除文件、创建目录、删除目录、Bucket操作等】
作者QQ:(648437169) 点击下载➨Delphi阿里云对象存储OSS 阿里云api文档 [Delphi阿里云对象存储OSS]支持 获取Bucket列表.设置Bucket ...
- 阿里云服务执行mysql_install_db报错
问题描述:阿里云服务执行mysql_install_db报错解决方案:安装autoconf库(yum -y install autoconf)然后在执行:mysql_install_db就会出现这样, ...
- Xshell连接阿里云服务被拒绝
问题描述:突然的Xshell连接阿里云服务被拒绝了(如图)网上众多的方案都不行例如:https://www.cnblogs.com/wanglle/p/11416987.html(参考博文,本人这个问 ...
- 使用Xshell链接阿里云服务
1.下载Xshell,进入xshell官网 https://xshell.en.softonic.com/,选择免费版本进行下载,在该页面https://www.netsarang.com/zh/fr ...
随机推荐
- Android学习(四) Layout五大布局
我们知道Android系统应用程序一般是由多个Activity组成,而这些Activity以视图的形式展现在我们面前, 视图都是由一个一个的组件构成的.组件就是我们常见的Button.TextEdit ...
- expect获取返回值
对于获取多台server状态且不用交互须要用到expect,但有时候expect无法获取返回值.这里解释一下expect怎样获取返回值 expect -c " spawn $1; ...
- 64位windows2003 未在本地计算机上注册 microsoft.jet.oledb.4.0 提供程序
64位windows2003系统 使用 mdb数据库时候出现如下错误. 可能用office的一些比较旧的程序时候会这样. 未在本地计算机上注册 microsoft.jet.oledb.4.0 提供程序 ...
- 合并apk和odex
Android的ROM中有很多odex文件,相对于APK中的dex文件而言这个odex有什么作用呢? 如果你仔细观察会发现文件名时一一对应的,同时那些对应的apk文件中没有dex文件.这样做可以使其厂 ...
- IIS相关知识和经验的碎皮化记录
1.IIS(Internet Information Services)网站本机可以访问,局域网其他机器无法访问 导致这个问题之一是防火墙规则,解决办法如下: 1)[开始]打开[控制面板],选择[WI ...
- MVC基础操作
C#-MVC基础操作-数据的展示及增删改.登录页面及状态保持一.数据展示1.View代码: <%@Page Language="C#" Inherits="Syst ...
- C/C++ 内存管理总结
C内存管理 存储时: 执行程序在存储时(没有调入到内存)分为代码区(text).数据区(data)和未初始化数据区(bss)3个部分. 1 代码区(text segment) 存放CPU执行的机器指令 ...
- sqlserver修改表主键自增
alter table tname add id int identity(1,1)
- 0x00 使用Ant 设置项目
1. Ant 简介: Ant 是一款广泛使用的流行的开源构建工具,它用Java语言编写. 2.Ant官网: Ant官网:http://ant.apache.org/ 3.设置环境变量: 新建 Vari ...
- UVA 11354 - Bond (最小生成树 + 树链剖分)
题目链接~~> 做题感悟:这题開始看到时感觉不是树不优点理,一想能够用 Kruskal 处理成树 ,然后就好攻克了. 解题思路: 先用 Kruskal 处理出最小生成树.然后用树链剖分 + 线段 ...