赞
踩
这张图展示了文件存储的几种常见模式:
普通上传:在这种情况下,浏览器直接将文件上传给商品服务,然后由商品服务保存文件。这种方式简单明了,但是存在单点故障风险,因为所有文件都在同一台服务器上存储。
分布式情况下的普通上传:这是一种改进后的版本,多个商品服务共享同一个文件存储空间。然而,这种方案仍然需要自己维护文件存储基础设施,包括搭建和维护 FastDFS 或 vsftpd 文件系统,这可能会带来较高的前期成本和维护负担。
自建服务器:商品服务将文件上传至自建的文件存储服务器。虽然这种方式可以实现一定的分布式的文件存储,但它需要自行搭建和维护,包括硬件投入、网络带宽、存储容量规划等,因此初期成本较高,且后期维护成本也不低。
云存储:云存储(如阿里云对象存储或七牛云存储)提供了一种即开即用的服务,不需要自己购买和维护硬件设备,只需要按需付费。这种方式降低了前期投入,同时也减少了运维压力。
阿里云OSS(Object Storage Service)是阿里云提供的一种大规模、安全、低成本、高可靠的云存储服务。OSS使用了一套特有的资源术语来描述其服务中的各种组件和概念。
下面是一些主要的资源术语及其含义:
Bucket(存储空间):
Object(对象/文件):
Key(对象名/键):
Endpoint(访问域名):
Region(地域):
Security(安全):
Versioning(版本控制):
Lifecycle Management(生命周期管理):
CORS(跨源资源共享):
Logging(日志记录):
用户请求上传Policy:用户(可以是网页上的用户或者移动设备上的用户)向应用服务器发送请求,要求获取上传Policy。这个过程通常是在前端发起的,例如在网页上点击“上传文件”按钮时。
应用服务器返回上传Policy:应用服务器收到用户的请求后,生成一个上传Policy并返回给用户。上传Policy是一段JSON格式的数据,包含了允许用户上传文件的一些限制条件,比如密钥
、最大文件大小、可上传的文件类型等。
用户直接上传数据到OSS:用户拿到上传Policy后,就可以直接将数据上传到OSS了。这里需要注意的是,用户并不是直接将数据传给应用服务器,而是通过OSS提供的API接口将数据上传到云端。这样做的好处是可以减轻应用服务器的压力,同时也能保证数据的安全性和可靠性。
总的来说,这种架构设计使得用户可以直接与OSS进行交互,而不需要经过应用服务器,从而提高了系统的性能和稳定性。
同时,由于上传Policy的存在,也可以对用户的上传行为进行一定的控制和管理。
在Java中,可以使用阿里云的OSS SDK来操作对象存储服务(OSS)。以下是一个简单的示例,展示了如何使用OSS SDK上传文件到OSS:
首先,你需要在你的项目中添加OSS SDK的依赖。如果你使用的是Maven,你可以在pom.xml文件中添加以下依赖:
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.12.0</version>
</dependency>
然后,你可以创建一个OSSClient实例,并使用它来上传文件:
import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; public class OSSSample { public static void main(String[] args) { String endpoint = "<YourEndpoint>"; String accessKeyId = "<YourAccessKeyId>"; String accessKeySecret = "<YourAccessKeySecret>"; String bucketName = "<YourBucketName>"; String objectName = "<YourObjectName>"; String localFile = "<YourLocalFile>"; // 创建OSSClient实例。 OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); // 上传本地文件到OSS。 ossClient.putObject(bucketName, objectName, localFile); // 关闭OSSClient。 ossClient.shutdown(); System.out.println("Upload success."); } }
在这个示例中,你需要替换<YourEndpoint>
、<YourAccessKeyId>
、<YourAccessKeySecret>
、<YourBucketName>
、<YourObjectName>
和<YourLocalFile>
为你的实际值。
注意:上传文件后,不要忘记关闭OSSClient。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。