亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python中使用Minio實(shí)現(xiàn)圖像或視頻文件存儲(chǔ)的步驟

 更新時(shí)間:2025年02月17日 09:39:22   作者:HHUCESTA  
本文章向大家介紹了Minio這一款簡(jiǎn)易的云存儲(chǔ)服務(wù)器,并講述了如何在Python中去使用Minio,實(shí)現(xiàn)了視頻文件的上傳和獲取,感興趣的朋友一起看看吧

一、Minio的基本介紹

1.Minio是什么

Minio是一款開源的高性能對(duì)象存儲(chǔ)服務(wù)器,專門針對(duì)大規(guī)模數(shù)據(jù)存儲(chǔ)而設(shè)計(jì)。當(dāng)開發(fā)一個(gè)網(wǎng)站系統(tǒng)時(shí),我們往往需要存儲(chǔ)許多的圖片或視頻信息,如果將這些文件信息直接存儲(chǔ)在本地?cái)?shù)據(jù)庫(kù)中,那是十分低效且復(fù)雜的,隨著訪問(wèn)量的增加,本地?cái)?shù)據(jù)庫(kù)難以承載較大的數(shù)據(jù)量,可能會(huì)導(dǎo)致各種問(wèn)題。因此,我們將選擇Minio來(lái)解決這一問(wèn)題。

2.Minio的優(yōu)勢(shì)

作為一款云存儲(chǔ)服務(wù)工具,Minio具有廣泛的兼容性,支持在各種環(huán)境部署,包括物理服務(wù)器、虛擬機(jī)等等,并且它的技術(shù)文檔十分完善,使用起來(lái)是很簡(jiǎn)單的。同時(shí),相比于阿里云、百度云這些云存儲(chǔ)服務(wù)器,Minio是完全免費(fèi)的。

二、使用步驟

1.啟動(dòng)Minio

在成功下載Minio之后,進(jìn)入minio.exe文件所在目錄,用cmd加回車快速打開命令提示符。

輸入命令minio server ./data啟動(dòng)Minio服務(wù),其中data是存放數(shù)據(jù)的文件夾名稱。

在瀏覽器中訪問(wèn)Minio服務(wù)控制臺(tái),輸入http://127.0.0.1:9000跳轉(zhuǎn)至如下頁(yè)面:

默認(rèn)賬號(hào)和密碼都為minioadmin,輸入完后點(diǎn)擊login進(jìn)入主頁(yè)面。

2.創(chuàng)建桶

點(diǎn)擊左邊Buckets菜單,并選擇右上角Create Bucket選項(xiàng),創(chuàng)建一個(gè)名為test的桶,用來(lái)存放圖片或視頻文件數(shù)據(jù)。

3.在Python中使用Minio

3.1安裝并導(dǎo)入minio包

輸入命令:pip install minio進(jìn)行安裝
安裝完成后將包導(dǎo)入:

from minio import Minio, S3Error

3.2創(chuàng)建mino_utils工具類

1.配置Minio,包括訪問(wèn)地址、端口、訪問(wèn)秘鑰、密碼秘鑰和桶名

endpoint = "127.0.0.1:9000"
access_key = "minioadmin"
secret_key = "minioadmin"
bucket_name = 'test'

2.創(chuàng)建一個(gè)Minio實(shí)例對(duì)象

client = Minio(
    endpoint=endpoint,
    access_key=access_key,
    secret_key=secret_key,
    secure=False
)

3.編寫上傳文件功能的方法,輸入文件路徑和文件名,將上傳的文件存入test桶中

import os
def upload(file_path,file_name):
    try:
        with open(file_path, 'rb') as file_data:
            client.put_object(bucket_name, file_name, file_data, length=os.path.getsize(file_path))
            print(file_name)
    except S3Error as err:
        print(err)

4.再編寫一個(gè)獲取文件的方法,輸入文件名,返回文件訪問(wèn)的url,這里給url添加了一天的過(guò)期時(shí)間

from datetime import timedelta
def getUrl(file_name):
    expires = timedelta(days=1)
    try:
        url = client.presigned_get_object(bucket_name, file_name, expires=expires)
        return url
    except Exception as err:
        print(err)

工具類minio_utils的完整代碼如下:

import os
from datetime import timedelta
from minio import Minio, S3Error
# MinIO服務(wù)地址、端口、訪問(wèn)密鑰和秘密密鑰
endpoint = "127.0.0.1:9000"
access_key = "minioadmin"
secret_key = "minioadmin"
bucket_name = 'test'  #桶名
#創(chuàng)建一個(gè)Minio實(shí)例對(duì)象
client = Minio(
    endpoint=endpoint,
    access_key=access_key,
    secret_key=secret_key,
    secure=False
)
#上傳文件
def upload(file_path,file_name):
    try:
        with open(file_path, 'rb') as file_data:
            client.put_object(bucket_name, file_name, file_data, length=os.path.getsize(file_path))
            print(file_name)
    except S3Error as err:
        print(err)
#通過(guò)文件名獲得文件訪問(wèn)的url
def getUrl(file_name):
    expires = timedelta(days=1)
    try:
        url = client.presigned_get_object(bucket_name, file_name, expires=expires)
        return url
    except Exception as err:
        print(err)

后續(xù)可直接導(dǎo)入minio_utils工具類來(lái)使用里面的方法

三、操作演示

1.引入minio_utils工具類

from mino_utils import upload, getUrl

2.上傳視頻文件

在實(shí)際應(yīng)用中,我們可以對(duì)需要上傳的文件先隨機(jī)生成一個(gè)特有的文件名,這里通過(guò)上傳的時(shí)間來(lái)隨機(jī)生成一個(gè)文件名,然后把這個(gè)隨機(jī)文件名存放在本地?cái)?shù)據(jù)庫(kù)中,方便之后直接通過(guò)該文件名來(lái)訪問(wèn)文件。

import time
from hashlib import md5
fileName = md5(str(time.time()).encode("utf-8")).hexdigest() #隨機(jī)生成文件名
upload("./file/tennis.mp4", fileName)
print("success")

運(yùn)行結(jié)果如下:

再次打開Minio控制臺(tái)并刷新,發(fā)現(xiàn)test桶中存放該視頻文件,文件上傳成功!

3.獲取視頻文件

調(diào)用minio_utils工具類的方法,通過(guò)文件名直接獲取文件訪問(wèn)的url。

url = getUrl("8a21e13cfa33a506634c90c2297b7e01")
print(url)

結(jié)果如下:

Ctrl + 左鍵打開url,文件在瀏覽器中下載,成功打開該視頻文件!

總結(jié)

本文章向大家介紹了Minio這一款簡(jiǎn)易的云存儲(chǔ)服務(wù)器,并講述了如何在Python中去使用Minio,實(shí)現(xiàn)了視頻文件的上傳和獲取。同時(shí),本文章從實(shí)際開發(fā)的角度,通過(guò)Minio讓本地?cái)?shù)據(jù)庫(kù)只存儲(chǔ)文件的名稱,而不是存儲(chǔ)整個(gè)文件,大大減少了本地?cái)?shù)據(jù)庫(kù)存儲(chǔ)的壓力。Minio還有許多其他的功能,感興趣的同學(xué)可以自行去探索。

到此這篇關(guān)于Python中使用Minio實(shí)現(xiàn)圖像或視頻文件的存儲(chǔ)的文章就介紹到這了,更多相關(guān)Python Minio文件存儲(chǔ)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python爬蟲指南之xpath實(shí)例解析(附實(shí)戰(zhàn))

    python爬蟲指南之xpath實(shí)例解析(附實(shí)戰(zhàn))

    在進(jìn)行網(wǎng)頁(yè)抓取的時(shí)候,分析定位html節(jié)點(diǎn)是獲取抓取信息的關(guān)鍵,目前我用的是lxml模塊,下面這篇文章主要給大家介紹了關(guān)于python爬蟲指南之xpath實(shí)例解析的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • Python結(jié)合Window計(jì)劃任務(wù)監(jiān)測(cè)郵件的示例代碼

    Python結(jié)合Window計(jì)劃任務(wù)監(jiān)測(cè)郵件的示例代碼

    這篇文章主要介紹了Python結(jié)合Window計(jì)劃任務(wù)監(jiān)測(cè)郵件的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • tensorflow如何將one_hot標(biāo)簽和數(shù)字(整數(shù))標(biāo)簽進(jìn)行相互轉(zhuǎn)化

    tensorflow如何將one_hot標(biāo)簽和數(shù)字(整數(shù))標(biāo)簽進(jìn)行相互轉(zhuǎn)化

    這篇文章主要介紹了tensorflow如何將one_hot標(biāo)簽和數(shù)字(整數(shù))標(biāo)簽進(jìn)行相互轉(zhuǎn)化問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Python實(shí)現(xiàn)發(fā)票自動(dòng)校核微信機(jī)器人的方法

    Python實(shí)現(xiàn)發(fā)票自動(dòng)校核微信機(jī)器人的方法

    這篇文章主要介紹了Python實(shí)現(xiàn)發(fā)票自動(dòng)校核微信機(jī)器人的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Python中的TCP socket寫法示例

    Python中的TCP socket寫法示例

    最近在學(xué)習(xí)腳本語(yǔ)言python,所以下面這篇文章主要給大家介紹了關(guān)于Python中TCP socket寫法的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們一起來(lái)看看吧
    2018-05-05
  • Python?selenium?find_element()示例詳解

    Python?selenium?find_element()示例詳解

    selenium定位元素的函數(shù)/方法可以分為兩類:find_element及find_elements,下面這篇文章主要給大家介紹了關(guān)于Python?selenium?find_element()的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • Python使用列表推導(dǎo)式快速生成列表

    Python使用列表推導(dǎo)式快速生成列表

    這篇文章主要介紹了Python使用列表推導(dǎo)式快速生成列表,列表推導(dǎo)式是Python構(gòu)建列表list的一種快捷方式,可以使用簡(jiǎn)潔的代碼就創(chuàng)建出一個(gè)列表,需要的朋友可以參考下
    2023-07-07
  • python數(shù)組轉(zhuǎn)換為矩陣的方法實(shí)現(xiàn)

    python數(shù)組轉(zhuǎn)換為矩陣的方法實(shí)現(xiàn)

    本文主要介紹了python數(shù)組轉(zhuǎn)換為矩陣的方法實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • python數(shù)據(jù)分析工具之 matplotlib詳解

    python數(shù)據(jù)分析工具之 matplotlib詳解

    對(duì)于 Python 來(lái)說(shuō),matplotlib 是最著名的繪圖庫(kù),它主要用于二維繪圖,當(dāng)然也可以進(jìn)行簡(jiǎn)單的三維繪圖。這篇文章主要介紹了python數(shù)據(jù)分析工具之 matplotlib的相關(guān)知識(shí),需要的朋友可以參考下
    2020-04-04
  • Python使用Numpy模塊讀取文件并繪制圖片

    Python使用Numpy模塊讀取文件并繪制圖片

    這篇文章主要介紹了Python使用Numpy模塊讀取文件并繪制圖片,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05

最新評(píng)論