一种基于阿里云对象存储oss的档案系统的制作方法

文档序号:10471223阅读:266来源:国知局
一种基于阿里云对象存储oss的档案系统的制作方法
【专利摘要】本发明公开了一种基于阿里云对象存储OSS的档案系统,属于云存储技术领域,业务流转如下:1)应用能过自己的方式请需要上传的图片或文件上传到档案系统的文件服务器上。2)上传成功后,应用调用档案系统的服务,将文件的基本信息提供给档案系统服务,档案系统将文件的相关信息保存到数据库中。3)文件基本信息保存成功后,档案系统将文件上传到oss服务器中。4)档案系统提供给管理者一个管理平台,可查看当前文件的状态,文件存储在oss的逻辑名称、文件的物理名称等,以及是否启用已删除的文件。本发明基于阿里对象存储的档案系统,是阿里云对外提供的海量、安全和高可靠的云存储服务。容量和处理能力的弹性扩展。
【专利说明】
一种基于阿里云对象存储OSS的档案系统
技术领域
[0001]本发明涉及云存储技术领域,具体地说是一种基于阿里云对象存储OSS的档案系统。
【背景技术】
[0002]档案系统,作为现在各业务系统中需要用到文件上传,是不可缺少的一个中心服务,但由于目前文件、图片等的管理存在的太多的复杂性,包括大文件传输、流程控制、动态扩容、平台相关性等。
[0003]目前我们大部分的档案系统,都是将文件存储在文件服务器上,存在的问题如下:(I)扩展性差,当目标文件服务器的空间不足时,需要扩展服务器容量,我们需要人工的购买硬件、然后将硬件加入到服务器中,这样对于用户来说,需要停机服务,然后再开机服务,即影响了系统的实时性,也增加了成本,无法保证弹性扩容。(2)当大批量的用户在实时读写文件时,会产生大量的并发性,很容易导致系统瘫痪。(3)僵硬的图片存储,无法支持缩略、裁剪、水印、压缩和格式转换等图片处理功能。

【发明内容】

[0004]本发明的技术任务是提供一种基于阿里云对象存储OSS的档案系统,解决服务器扩展性差、大批量用户实时读写文件时容易导致系统瘫痪的问题,基于阿里对象存储(Object Storage Service)的档案系统,是阿里云对外提供的海量、安全和高可靠的云存储服务,RESTFul API的平台无关性,容量和处理能力的弹性扩展。
[0005]本发明解决其技术问题所采用的技术方案是:
一种基于阿里云对象存储OSS的档案系统,业务流转如下:
1)应用能过自己的方式请需要上传的图片或文件上传到档案系统的文件服务器上;
2)上传成功后,应用调用档案系统的服务,将文件的基本信息(包括系统编号、业务编号、表单编号、文件类型、文件扩展名、物理文件名称、逻辑文件名称、文件描述、用户代码)提供给档案系统服务,档案系统将文件的相关信息保存到数据库中;
3)文件基本信息保存成功后,档案系统将文件上传到oss服务器中。同时给相应的用户返回查询、删除、下载接口,使得用户只关注的于上传的动作,具体文件上传到oss上及在OSS上的存储大小、安全性全部由OSS管理;
4)档案系统提供给管理者一个管理平台,可查看当前文件的状态,文件存储在oss的逻辑名称、文件的物理名称等,以及是否启用已删除的文件;
所述档案系统提供三个应用接口,具体步骤如下:
1)档案系统文件新增服务CreateArchiveFile(String jsonstr);
2)档案系统文件查询服务QueryArchiveFile(String jsonstr);
3)档案系统文件删除服务DeleteArchiveFile(String jsonstr)。
[0006]所述档案系统文件新增服务CreateArchiveFiIe,应用能过自己的方式请需要上传的图片或文件上传到档案系统的文件服务器上,调用CreateArchi veFi Ie服务,请求上传文件的json串,主要包括业务数据内容为:系统编号、业务编号、表单编号、文件类型、文件扩展名、物理文件名称、逻辑文件名称、文件描述、用户代码。
[0007]所述档案系统文件查询服务QueryArchiveFile,应用调用档案系统的QueryArchiveFiIe服务,请求的json串,主要包括系统编号、业务编号、表单编号、用户代码,可以返回当前用户所有已经上传的文件列表。
[0008]所述档案系统文件删除服务DeleteArchiveFile,应用调用档案系统的QueryArchiveFiIe服务,请求的json串,主要包括:物理文件名称。
[0009]本发明的一种基于阿里云对象存储OSS的档案系统与现有技术相比,具有以下有益效果:
档案系统基于阿里对象存储(Object Storage Service),是阿里云对外提供的海量、安全和高可靠的云存储服务的特点,在其基础上进行了服务接口的开放化,为用户提供简单、高效的服务接口。对于用户来说,他们只是需要上传相应的文件,而不需要去关注存储空间是否足够。当大批量用户访问档案系统时,档案系统会将请求发送到oss服务器,由oss进行文件的分发式请求处理,保证了大并发下用户访问正常。同时我们的服务接口会保存文件的相关信息,对于管理者来说,可以实时的查看文件的相关状态及做相应的文件处理。
【附图说明】
[0010]图1是本发明档案系统文件上传示意图;
图2本发明档案系统文件上传实施框图。
【具体实施方式】
[0011 ]下面结合附图对本发明作进一步说明。
[0012]如图1所示按先后顺序,档案系统文件上传分以下几步:
(I)应用能过自己的方式请需要上传的图片或文件上传到档案系统的文件服务器上。
[0013](2)上传成功后,应用调用档案系统的服务,将文件的基本信息(包括系统编号、业务编号、表单编号、文件类型、文件扩展名、物理文件名称、逻辑文件名称、文件描述、用户代码)提供给档案系统服务,档案系统将文件的相关信息保存到数据库中。
[0014](3)文件基本信息保存成功后,档案系统将文件上传到oss服务器中。同时给相应的用户返回查询、删除、下载接口,使得用户只关注的于上传的动作,具体文件上传到OSS上及在OSS上的存储大小、安全性全部由OSS管理。
[0015]图2为文件上传的具体实现步骤:
(I)用户如果没有安全ID和密钥,要先申请。
[0016](2)创建上传文件的客户端对象。
[0017]( 3)查询是否有文件存储对象,如果不存在,则创建该对象,同时设置相应的读写权限。
[0018](4)上传具体的文件。
[0019]档案系统目前提供三个应用接口,具体步骤如下:
(I)档案系统文件新增服务CreateArchiveFile (String jsonstr); 应用能过自己的方式请需要上传的图片或文件上传到档案系统的文件服务器上,调用CreateArchiveFiIe服务,请求上传文件的json串,主要包括业务数据内容为:系统编号、业务编号、表单编号、文件类型、文件扩展名、物理文件名称、逻辑文件名称、文件描述、用户代码。
[0020] (2)档案系统文件查询服务QueryArchiveFile (String jsonstr);
应用调用档案系统的QueryArchiveFiIe服务,请求的json串,主要包括系统编号、业务编号、表单编号、用户代码。可以返回当前用户所有已经上传的文件列表。
[0021 ] (3)档案系统文件删除服务DeleteArchiveFile (String jsonstr);
应用调用档案系统的QueryArchiveFiIe服务,请求的json串,主要包括:物理文件名称。
[0022]文件上传,我们需要定义文件上传的路径,即文件服务器的路径,然后建立oss文件上传的本地对象OSSClient client = new 0SSClient(ACCESS_ID, ACCESS_KEY);在进行上传之前,我们要看是否有已经存在的Bucket,如果Bucket没有创建,那么创建新Bucket ,client.createBucket(bucketName);还需要验证是否有权限上传,设置权限为client.setBucketAcl(bucketName, CannedAccessControlList.PublicRead);设置成公共读写权限。文件上传主要能过调用cl ient.putOb ject (bucketName,key , input,objectMeta);将文件上传到oss服务器,文件上传的内部实现见附图2。具体部署如下:
1、首先需要阿里云的用户中创建用于访问OSS的安全密钥的安全ID(AccessKey ID)及安全密钥(Access Key Secret);
2、使用默认的OSS服务器地址创建OSSClient对象,OSSClientclient = new0SSClient(ACCESS_ID, ACCESS_KEY);
3、在进行上传之前,我们要看是否有已经存在的文件存储对象(Bucket),创建方法如下:
private static void CreateBucket(0SSC1ient client, String bucketName)throws OSSExcept1n, ClientExcept1n{
try {
Il创建bucket
client.createBucket(bucketName);
} catch (ServiceExcept1n e) {
if (!OSSErrorCode.BUCKET_ALREADY_EXISTS.equals(e.getErrorCode
())){
Il如果Bucket已经存在,则忽略 throw e;
}
}
4、需要设置权限上传,设置权限为:
private static void setBucketPublicReadable(OSSClient client, StringbucketName)
throws OSSExcept1n, ClientExcept1n { //设置bucket的访问权限,public-read-wri te权限client.setBucketAcl(bucketName,CannedAccessControIList.PubIi cReadffr i te);
}
权限有三种类型:CannedAccessControlLi st.Private私有权限、CannedAcce s sContro I Li st.Pub IicRead 公共读、CannedAccessControlList.Pub IicReadWrite公共读写
5、文件上传:
private static void uploadFiIe(OSSClient client, String bucketName,String key, String filename)
throws OSSExcept1n, ClientExcept1n, FileNotFoundExcept1n { File file = new File(filename);
ObjectMetadata objectMeta = new ObjectMetadataO;objectMeta.setContentLength(f iIe.length());
//可以在metadata中标记文件类型 objectMeta.setContentType(,,image/jpeg〃);
InputStream input = new FileInputStream(file); client.putObject(bucketName,key,input,objectMeta);
}
文件下载:
文件下载,对于本地下载的情况,我们需要提供的是存储路径,对于远程调用接口的形式,由于我们在上传文件的时候,可以根据定义好的规则,直接返回文件的url,用户可以直接根据该urI下载,客户端下载可调用client.getObject(new GetObjectRequest(bucketName, key) ,new File(filename)),部分代码如下:
private static void downloadFile(OSSClient client, String bucketName,String key, String filename)
throws OSSExcept1n, ClientExcept1n {
/ /生成监听bucket中的文件夹
ObjectListing ObjectListing = client.1istObjects(bucketName); List<OSSObjectSummary> allfileList = ObjectListing.getObjectSummaries();
String objName ;
//循环读取容器中的文件
for (int i = O; i < allfileList.size(); i++) { objName = allfileList.get(i).getKeyO;
client.getObject(new GetObjectRequest(bucketName,objName), new File(filename+objName));
}
} 文件删除:
文件删除,删除接口 DeleteArchiveFile,我们可以单独删除一个文件,也可以批量删除一个Bucket下的所有文件,遍历文件可以用ObjectListing.getObjectSummaries();删除文件可以用cl ient.deleteOb ject (bucketName,objectName);部分删除代码如下:private static void deleteBucket(OSSClient client, String bucketName)throws OSSExcept1n, ClientExcept1n {
ObjectListing ObjectListing = client.1istObjects(bucketName);List<0SS0bjectSummary> deleteList = ObjectListing.getObjectSummaries();
System.0ut.println(deleteList);
for (int i = 0; i < deleteList.size(); i++) {
String objectName = deleteList.get(i).getKeyO;
//如果不为空,先删除bucket下的文件
client.deIeteObject(bucketName,objectName);
}
}
【主权项】
1.一种基于阿里云对象存储OSS的档案系统,其特征在于,业务流转如下: 1)应用能过自己的方式请需要上传的图片或文件上传到档案系统的文件服务器上; 2)上传成功后,应用调用档案系统的服务,将文件的基本信息(包括系统编号、业务编号、表单编号、文件类型、文件扩展名、物理文件名称、逻辑文件名称、文件描述、用户代码)提供给档案系统服务,档案系统将文件的相关信息保存到数据库中; 3)文件基本信息保存成功后,档案系统将文件上传到oss服务器中,同时给相应的用户返回查询、删除、下载接口,使得用户只关注的于上传的动作,具体文件上传到oss上及在OSS上的存储大小、安全性全部由OSS管理; 4)档案系统提供给管理者一个管理平台,可查看当前文件的状态,文件存储在oss的逻辑名称、文件的物理名称等,以及是否启用已删除的文件; 所述档案系统提供三个应用接口,具体步骤如下: 1)档案系统文件新增服务CreateArchiveFile(String jsonstr); 2)档案系统文件查询服务QueryArchiveFile(String jsonstr); 3)档案系统文件删除服务DeleteArchiveFile(String jsonstr)。2.根据权利要求1所述的一种基于阿里云对象存储OSS的档案系统,其特征在于档案系统文件新增服务CreateArchi veFi Ie,应用能过自己的方式请需要上传的图片或文件上传到档案系统的文件服务器上,调用CreateArchiveFiIe服务,请求上传文件的json串,主要包括业务数据内容为:系统编号、业务编号、表单编号、文件类型、文件扩展名、物理文件名称、逻辑文件名称、文件描述、用户代码。3.根据权利要求1所述的一种基于阿里云对象存储OSS的档案系统,其特征在于档案系统文件查询服务QueryArchi veFi Ie,应用调用档案系统的QueryArchi veFi Ie服务,请求的json串,主要包括系统编号、业务编号、表单编号、用户代码,可以返回当前用户所有已经上传的文件列表。4.根据权利要求1所述的一种基于阿里云对象存储OSS的档案系统,其特征在于档案系统文件删除服务DeleteArchi veFi Ie,应用调用档案系统的QueryArchiveFi Ie服务,请求的json串,主要包括:物理文件名称。
【文档编号】G06F17/30GK105824932SQ201610155390
【公开日】2016年8月3日
【申请日】2016年3月18日
【发明人】于明伟
【申请人】浪潮软件集团有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1