阿里云服务(一)——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,来进行查询学习,其实挺简单的。

反思一下吧,最近学习的少了,可能和加班有关系,更大的是自己的心态吧,调整好心态继续努力吧。

时间: 2024-08-25 23:58:30

阿里云服务(一)——OSS的相关文章

#2015,赢在云端# 阿里云服务全新呈现

#2015,赢在云端# 阿里云服务全新呈现,节点国际化.上云更容易.备案全覆盖.6大金牌服务保障.新一年,让我们做的更好!主会场链接:http://click.aliyun.com/m/862/

运用webmagic,SSI框架,阿里云服务,mysql,freeMarker,bootStrap3.0,Jquery 等搭建的个人网站,有兴趣的可以来看看

网站是 电影之家, 前前后侯花了半年的时间(但真正的开发时间应该是不到一个月的,涉及技术(webmagic,SSI框架,阿里云服务,mysql,freeMarker,bootStrap3.0,Jquery)), 因为平常要上班,周末又想多休息.所以搞了那么久. 网站中运用到的技术就是标题上的那些,还有一些小的东西可能我都忘记了. 建站也是第一次,所以从申请域名 ,备案,购买服务器,上传代码,调试代码等等都是一边摸索一边做的. 就项目而言自己还是有很多收获的,也有很多经验可以分享. 欢迎大家访问网

爬虫实战篇---使用Scrapy框架进行模拟登录(包括借助阿里云服务自动识别验证码)

(1).前言 原理分析:我们编写代码模拟向网站发出登录请求,也就是提交包含登录信息的表单(用户名.密码等). 实现方式:当我们想在请求数据时发送post请求,这时候需要借助Request的子类FormRequest来实现,如果想进一步在爬虫一开始时就发送post请求,那么我们需要重写start_request()方法,舍弃原先的start_url()(采用get请求) (2).模拟登录人人网(例子1) 1.创建项目 scrapy startproject renren---cd renren--

阿里云对象存储OSS支持版本管理特性

阿里云对象存储OSS现已经全面支持"对象版本管理"特性.该功能适用于所有的存储类型以及区域.当Bucket启用该特性后,"对象版本管理"功能可以保护和恢复误删除.误覆盖的数据. 对象存储OSS"版本管理"具有如下特点: 提供"应用级"数据保护,可防止文件意外覆盖:当Bucket开启版本管理特性后,该Bucket内对象的每次修改.删除操作,OSS都会生成对应的历史版本.授权的用户可以通过控制台.API.SDK等方式查询.下载以及

WPOSS – WordPress阿里云对象存储OSS插件 网站图片分离加速

我们WordPress课堂在前面有一篇文章中介绍到WPCOS插件,这是针对WordPress程序集合腾讯云COS对象存储进行网站图片分离的插件,包括我们网站目前也有在用.可以降低网站的带宽占用,提高网站的访问速度,当然这个需要我们购买对象存储和流量包,必要的成本还是需要的. 不过有些网友提到自己如果在使用阿里云服务器建站的时候,也想用到类似的插件分离网站的图片或者其他附件文件,那在这里笔者就推荐使用类似的WPOSS插件,基于阿里云对象存储OSS的.功能上有些类似WPCOS,但是稍微设置上有一些不

阿里云服务

作者:张紫荣链接:http://www.zhihu.com/question/24795126/answer/41691845来源:知乎著作权归作者所有,转载请联系作者获得授权. 最近正好对这些产品做过总结,我来介绍一下阿里云主要的产品及功能: ECS (Elastic Compute Service):以虚拟机的方式将一台物理机分成多台云服务器,提供可伸缩的计算服务. SLB (Server Load Balance):基于LVS和Tengine实现的4层和7层负载均衡,有动态扩容,sessi

利用阿里云SDK获取OSS存储值

为了先说名一下SDK和openAPI的区别,这里借用知乎一位朋友最简单粗暴的回答: 如此的形象生动,我为他点赞! 下面具体说一下阿里云的SDK. 阿里云的SDK使用需要两个前提,第一是要安装他的sdk核心库:第二是要安装具体的服务库. 安装sdk核心库的方法:#pip install aliyun-python-sdk-core. 如果安装的时候报"-bash: pip: command not found"这个错误,那么就要#curl -O https://bootstrap.pyp

阿里云ACP笔记-OSS

OSS,对象存储服务,是阿里云对外提供的云存储服务.RESTFul API的平台无关性,容量和处理能力的弹性扩展,按实际容量付费. OSS的主要功能: 1.弹性扩展 2.大规模 3.图片处理 4.按需付费 OSS产品特点: 1.稳定:可用性99.9%,系统规模自动扩展,对外服务不受影响,数据三重备份,可靠性达到99.99999999% 2.安全:多层次安全防护和防DDoS攻击,多用户隔离机制,提供访问日志有助于追查非法访问 3.大规模.高性能:存储容量无限扩展,请求处理能力弹性增加,多线BGP网

阿里云服务开放端口配置

1. iptables 规则配置 使用 iptables 命令: iptables -I INPUT -p tcp --dport 9833 -j ACCEPT: 阿里云官方答案:    使用 service iptables save 命令保存设置: 使用 vi /etc/sysconfig/iptables 查看设置如下: 再次本地启动程序连接服务:显示连接成功 阿里云服务器防火墙关闭了,iptables 的INPUT和OUTPUT规则还是在生效: 2. 安全组配置规则 在云服务器管理控制台