网站采用哪种开发语言,龙岩网站设计理念,徐州小学网站建设,石家庄今天又发现一例目录 一、Minio的基本介绍1.Minio是什么2.Minio的优势 二、使用步骤1.启动Minio2.创建桶3.在Python中使用Minio3.1安装并导入minio包3.2创建mino_utils工具类 三、操作演示1.引入minio_utils工具类2.上传视频文件3.获取视频文件 总结 一、Minio的基本介绍
1.Minio是什么
Mini… 目录 一、Minio的基本介绍1.Minio是什么2.Minio的优势 二、使用步骤1.启动Minio2.创建桶3.在Python中使用Minio3.1安装并导入minio包3.2创建mino_utils工具类 三、操作演示1.引入minio_utils工具类2.上传视频文件3.获取视频文件 总结 一、Minio的基本介绍
1.Minio是什么
Minio是一款开源的高性能对象存储服务器专门针对大规模数据存储而设计。当开发一个网站系统时我们往往需要存储许多的图片或视频信息如果将这些文件信息直接存储在本地数据库中那是十分低效且复杂的随着访问量的增加本地数据库难以承载较大的数据量可能会导致各种问题。因此我们将选择Minio来解决这一问题。
2.Minio的优势
作为一款云存储服务工具Minio具有广泛的兼容性支持在各种环境部署包括物理服务器、虚拟机等等并且它的技术文档十分完善使用起来是很简单的。同时相比于阿里云、百度云这些云存储服务器Minio是完全免费的。 二、使用步骤
1.启动Minio
在成功下载Minio之后进入minio.exe文件所在目录用cmd加回车快速打开命令提示符。 输入命令minio server ./data启动Minio服务其中data是存放数据的文件夹名称。 在浏览器中访问Minio服务控制台,输入http://127.0.0.1:9000跳转至如下页面 默认账号和密码都为minioadmin输入完后点击login进入主页面。
2.创建桶
点击左边Buckets菜单并选择右上角Create Bucket选项创建一个名为test的桶用来存放图片或视频文件数据。
3.在Python中使用Minio
3.1安装并导入minio包
输入命令pip install minio进行安装 安装完成后将包导入
from minio import Minio, S3Error3.2创建mino_utils工具类
1.配置Minio包括访问地址、端口、访问秘钥、密码秘钥和桶名
endpoint 127.0.0.1:9000
access_key minioadmin
secret_key minioadmin
bucket_name test2.创建一个Minio实例对象
client Minio(endpointendpoint,access_keyaccess_key,secret_keysecret_key,secureFalse
)3.编写上传文件功能的方法输入文件路径和文件名将上传的文件存入test桶中
import osdef upload(file_path,file_name):try:with open(file_path, rb) as file_data:client.put_object(bucket_name, file_name, file_data, lengthos.path.getsize(file_path))print(file_name)except S3Error as err:print(err)4.再编写一个获取文件的方法输入文件名返回文件访问的url这里给url添加了一天的过期时间
from datetime import timedeltadef getUrl(file_name):expires timedelta(days1)try:url client.presigned_get_object(bucket_name, file_name, expiresexpires)return urlexcept Exception as err:print(err)工具类minio_utils的完整代码如下
import os
from datetime import timedelta
from minio import Minio, S3Error# MinIO服务地址、端口、访问密钥和秘密密钥
endpoint 127.0.0.1:9000
access_key minioadmin
secret_key minioadmin
bucket_name test #桶名#创建一个Minio实例对象
client Minio(endpointendpoint,access_keyaccess_key,secret_keysecret_key,secureFalse
)#上传文件
def upload(file_path,file_name):try:with open(file_path, rb) as file_data:client.put_object(bucket_name, file_name, file_data, lengthos.path.getsize(file_path))print(file_name)except S3Error as err:print(err)#通过文件名获得文件访问的url
def getUrl(file_name):expires timedelta(days1)try:url client.presigned_get_object(bucket_name, file_name, expiresexpires)return urlexcept Exception as err:print(err)
后续可直接导入minio_utils工具类来使用里面的方法
三、操作演示
1.引入minio_utils工具类
from mino_utils import upload, getUrl2.上传视频文件
在实际应用中我们可以对需要上传的文件先随机生成一个特有的文件名这里通过上传的时间来随机生成一个文件名然后把这个随机文件名存放在本地数据库中方便之后直接通过该文件名来访问文件。
import time
from hashlib import md5fileName md5(str(time.time()).encode(utf-8)).hexdigest() #随机生成文件名
upload(./file/tennis.mp4, fileName)
print(success)运行结果如下 再次打开Minio控制台并刷新发现test桶中存放该视频文件文件上传成功
3.获取视频文件
调用minio_utils工具类的方法通过文件名直接获取文件访问的url。
url getUrl(8a21e13cfa33a506634c90c2297b7e01)
print(url)结果如下 Ctrl 左键打开url文件在浏览器中下载成功打开该视频文件 总结
本文章向大家介绍了Minio这一款简易的云存储服务器并讲述了如何在Python中去使用Minio实现了视频文件的上传和获取。同时本文章从实际开发的角度通过Minio让本地数据库只存储文件的名称而不是存储整个文件大大减少了本地数据库存储的压力。Minio还有许多其他的功能感兴趣的同学可以自行去探索。