阿里云服务(一) 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 ...
随机推荐
- Linux服务器大量向外发包问题排查
最近Linux redhat 6.5 APP 业务系统,向外大量发送流量,不断建立tcp连接,目标地址是美国的一个IP,估计被当成肉鸡了,比较悲惨,直接飞向IDC机房,防火墙显示这个APP服务器tcp ...
- PHP实现查看邮件是否被阅读
<? //当你在发送邮件时,你或许很想知道该邮件是否被对方已阅读.这里有段非常有趣的代码片段能够显示对方IP地址记录阅读//的实际日期和时间. error_reporting(0); Hea ...
- shell3
例一:监控httpd是否正常运行并自动开启 #!/bin/bash port=$(nmap -sT localhost | grep 'http$' |awk '{print $2}') riqi=$ ...
- [译] 通过 contentEditable 属性创建一个所见即所得的编辑器(富文本编辑器)
译者注 这只是一篇入门教程,介绍了一些基础知识,仅供参考,切不可因此觉得富文本编辑器很简单. 创建富文本编辑器是一个非常复杂的工程,需要考虑到方方面面,也有很多坑(请参考原文第一条评论). 为免误导大 ...
- 工作总结 无法确定条件表达式的类型,因为“<null>”和“System.DateTime”之间没有隐式转换 解决办法 object——Nullable<T> (可空类型)
可空值类型 备注 一种类型认为是可以为 null,如果它可以分配一个值,也可以分配null,这意味着类型具有无论如何没有值. 默认情况下,所有都引用类型,如String,是否可以为 null, ...
- nginx日志统计流量
cat access.log |awk '{sum+=$10} END {print sum/1024/1024/1024}' $10是nginx字段bytes_sent 字段,根据自己的日志格式修改 ...
- GO语言使用开源SSH模拟终端
<pre name="code" class="plain">package main import ( "go-ssh/ssh" ...
- Atitit.go语言golang语言的新的特性 attilax总结
Atitit.go语言golang语言的新的特性 attilax总结 1. 继承树less 动态接口1 1.1. 按照书中说的,Go语言具有以下的特征,下面我们分别来进行介绍. q 自动垃圾回收 ...
- JLink defective
下载了最新的JLink V622g,打开JLink命令行后,提示以下信息 The connected J-Link is defective,Proper operation cannot be gu ...
- nginx做反向代理proxy_pass,proxy_redirect的使用
大 | 中 | 小 今天用nginx作为trac的反代,发现一个问题,就是登入登出跳转的时候是白页,看了下网页相应内容,发现相应的location是空的.查了一下发现是只单纯用了proxy_pas ...