谷粒商城-品牌管理开发(OSS图片上传)(待更新)

1.单体应用可以将图片存在项目本地

2.分布式项目不能将图片存在项目本地,因为一个服务部署在多个服务器,在一次上传图片上传到了1号服务器,如果下次请求到了2号服务器,将拿不到1号服务器保存的图片

要解决此问题我们可以使用文件存储服务,文件同一写入这个服务中,同时读取时也统一在这里获取:

3. 这里我们使用阿里云的OSS对象存储服务:

(1)进入阿里云的控制台

(2)创建此项目的存储空间(Bucket):gulimail-d

(3)进入刚刚的Bucket,上传图片访问测试

 在浏览器访问:https://gulimail-d.oss-cn-beijing.aliyuncs.com/dongman.png就可以得到此图片。

4.如何实现在前端页面直接上传图片到这个Bucket :

(1)用户上传之前先在我们自己的服务拿到防伪签名,拿到后直接请求oss上传图片,这样就不会泄露我们自己的oss账号密码。

5.oss文件上传的java代码实现:(在阿里云找到oss文件上传的java的SDK:)

(1)想要通过java代码实现oss文件上传,首先需要导入阿里云对象存储的jar包

<dependency>
    <groupId>com.aliyun.oss</groupId>
    <artifactId>aliyun-sdk-oss</artifactId>
    <version>3.5.0</version>
</dependency>

(2)文件流上传代码实现:

// yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
String endpoint = "yourEndpoint";
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
String accessKeyId = "yourAccessKeyId";
String accessKeySecret = "yourAccessKeySecret";

// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

// 填写本地文件的完整路径。如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件流。
InputStream inputStream = new FileInputStream("D:\\localpath\\examplefile.txt");
// 依次填写Bucket名称(例如examplebucket)和Object完整路径(例如exampledir/exampleobject.txt)。Object完整路径中不能包含Bucket名称。
ossClient.putObject("examplebucket", "exampledir/exampleobject.txt", inputStream);

// 关闭OSSClient。
ossClient.shutdown();

(3)创建访问oss的账户密码:点击用户头像,找到AccessKey管理,然后创建子用户,账户类型点击只允许编程API登录访问。

Guess you like

Origin blog.csdn.net/kkkkkfffd/article/details/121466291