商城网站建设源码,阿里巴巴手工活外发加工网,企业网站建设源码 微信 手机,wordpress图片缓存在上一篇文章中#xff0c;我们已经在云服务器中安装并开启了minio服务#xff0c;本章我们将为大家讲解如何利用程序将文件上传到minio桶中
下面介绍MinIO中的几个核心概念#xff0c;这些概念在所有的对象存储服务中也都是通用的。 - **对象#xff08;Object#xff0…在上一篇文章中我们已经在云服务器中安装并开启了minio服务本章我们将为大家讲解如何利用程序将文件上传到minio桶中
下面介绍MinIO中的几个核心概念这些概念在所有的对象存储服务中也都是通用的。 - **对象Object** 对象是实际的数据单元例如我们上传的一个图片。 - **存储桶Bucket** 存储桶是用于组织对象的命名空间类似于文件夹。每个存储桶可以包含多个对象。 - **端点Endpoint** 端点是MinIO服务器的网络地址用于访问存储桶和对象例如http://192.168.10.101:9000 **注意** 9000为MinIO的API的默认端口前边配置的9001以为管理页面端口。 - **Access Key 和 Secret Key** **Access Key**是用于标识和验证访问者身份的唯一标识符相当于用户名。 **Secret Key**是与**Access Key**关联的密码用于验证访问者的身份。 首先
确保你的云服务器中开启了minio服务然后去浏览器访问IPPORT进行访问比如http://192.168.1.236:9001 在上一篇文章中我们修改了用户名和密码分别为admin 12345678输入登录即可 另外的一些功能可以参考官方文档这里指简单讲解
点击创建桶后输入桶名即可一些权限默认即可不需要特别设置 然后去用户中查看 minio界面上传文件 **访问图片** - **图片URL** 由于MinIO提供了HTTP访问功能所以可以通过浏览器直接访问对象。对象URL为MinIO的Endpoint对象的存储路径例如下图中的图片对象的URL为http://211.159.166.206:9000/doctorimg/37.jpg] 不出意外的话使用浏览器访问上述URL会得到如下响应很显然是没有访问权限。 若想继续访问图片需要修改图片**所在桶**的访问权限如下图所示 若想继续访问图片需要修改图片**所在桶**的访问权限 如上图所示可选的访问权限共有三个选项分别是Private、Public和Custom具体说明如下 - Private 只允许桶的所有者对该桶进行读写。 - Public 允许所有人对该桶进行读写。 - Custom 自定义访问权限。 若想将权限设置为只允许所有者写但允许所有人读就需要自定义访问权限。自定义访问权限需要使用一个规定格式的JSON字符串进行描述具体格式可参考[官方文档] 例如以下JSON字符串表达的含义是允许(Allow)所有人(*)读取(s3:GetObject)指定桶(doctorimg)的所有内容。
{Version: 2012-10-17,Statement: [{Effect: Allow,Principal: {AWS: [*]},Action: [s3:GetObject],Resource: [arn:aws:s3:::doctorimg/*]}]
} 然后再次访问 Java程序整合minio
MinIO提供了多种语言的SDK供开发者使用本项目需要用到Java SDK下面通过一个简单案例熟悉一下其基本用法具体内容可参考[官方文档](https://www.minio.org.cn/docs/minio/linux/developers/java/minio-java.html#)。
1. **创建一个Maven项目**
2. **引入如下依赖** dependencygroupIdio.minio/groupIdartifactIdminio/artifactIdversion8.5.3/version/dependency 注意 在此时很有可能会报依赖不兼容的错误
我自己也查询了许多资料如果你是大佬那你可以梳理清楚各依赖相互兼容的关系当我没说如果你是小白可以参考我的方法在引入两个与其配套的底层依赖 !--minio--dependencygroupIdio.minio/groupIdartifactIdminio/artifactIdversion${minio.version}/version/dependencydependencygroupIdcom.squareup.okhttp3/groupIdartifactIdokhttp/artifactIdversion${okhttp3.version}/version !-- 或者尝试更低版本 --/dependencydependencygroupIdcom.squareup.okio/groupIdartifactIdokio/artifactIdversion${okio.version}/version/dependencyminio.version8.5.3/minio.versionokhttp3.version4.8.1/okhttp3.versionokio.version2.8.0/okio.version
3. **编写如下内容**
package com.example.minio;import io.minio.*;
import io.minio.errors.MinioException;import java.io.IOException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;public class testminio {public static void main(String[] args) throws IOException, NoSuchAlgorithmException, InvalidKeyException {try {// 构造 MinIO Client 实例用于连接 MinIO 服务器// MinioClient.builder() 是 MinIO 客户端的构建器模式使用 endpoint() 方法设置服务器地址// 使用 credentials() 方法设置访问凭证用户名和密码MinioClient minioClient MinioClient.builder().endpoint(http://211.159.166.206:9000) // MinIO 服务器地址包含 IP 和端口.credentials(admin, 12345678) // 设置 MinIO 访问的用户名和密码.build();// 检查是否已经存在名为 doctorimg 的桶bucketboolean found minioClient.bucketExists(BucketExistsArgs.builder().bucket(doctorimg).build());if (!found) {// 如果桶不存在则创建一个名为 doctorimg 的桶minioClient.makeBucket(MakeBucketArgs.builder().bucket(doctorimg).build());// 设置桶的访问权限为公开允许所有用户进行 GetObject 操作即可以读取桶中的对象// 设置桶策略的 JSON 格式允许所有用户访问 doctorimg 桶中的对象String policy {\n \Statement\ : [ {\n \Action\ : \s3:GetObject\,\n \Effect\ : \Allow\,\n \Principal\ : \*\,\n \Resource\ : \arn:aws:s3:::doctorimg/*\\n } ],\n \Version\ : \2012-10-17\\n };// 将设置的策略应用到 doctorimg 桶上minioClient.setBucketPolicy(SetBucketPolicyArgs.builder().bucket(doctorimg).config(policy).build());} else {// 如果桶已经存在打印提示信息System.out.println(Bucket doctorimg already exists.);}// 上传文件到 MinIO 的 doctorimg 桶中// 使用 UploadObjectArgs.builder() 方法构建上传参数// bucket() 设置目标桶名// object() 设置文件在桶中的名称// filename() 设置要上传的文件的本地路径minioClient.uploadObject(UploadObjectArgs.builder().bucket(doctorimg) // 上传到的桶名.object(37.jpg) // 文件在桶中存储时的名称.filename(F:\\hospitalsystem\\upload\\doctor_img\\37.jpg) // 本地文件的绝对路径.build());// 文件上传成功后打印提示信息System.out.println(上传成功);} catch (MinioException e) {// 捕获 MinIO 客户端异常并打印错误信息System.out.println(Error occurred: e);}}
}运行上述代码然后查看MinIO管理页面观察是否上传成功。
注意 String policy {\n \Statement\ : [ {\n \Action\ : \s3:GetObject\,\n \Effect\ : \Allow\,\n \Principal\ : \*\,\n \Resource\ : \arn:aws:s3:::doctorimg/*\\n } ],\n \Version\ : \2012-10-17\\n };
此段代码表示设置权限不同jdk版本对支持不同类型jdk8只支持json但jdk22支持文本类型大家可以用文心一言生成适合你版本的类型
希望本篇博客能帮助你从入门到精通Minio快速在项目中应用它的强大功能。