作者:IT王小二
博客:https://itwxe.com
不知不觉大半年没更新了...前面小二介绍过使用Typora+MinIO+Java代码打造舒适写作环境
,然后有很多大佬啊,说用Java来实现简直是杀鸡用上牛刀,小二想了想,确实有点...正好小二最近在学习Python,所以咱们就改用Python实现一版。
(相关资料图)
安装MinIO安装参考MinIO官网,或者参考小二的博客,搜索关键词 → Linux安装MinIO
。
安装完成之后使用域名映射好后台服务,小二使用nginx配置域名,配置参考如下。
server { listen 443 ssl; server_name minio.itwxe.com; include /usr/local/nginx/conf/conf.d/common.conf; access_log logs/minioAccess.log; location / { proxy_pass http://127.0.0.1:9000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } server { listen 443 ssl; server_name minio-console.itwxe.com; include /usr/local/nginx/conf/conf.d/common.conf; access_log logs/minioAccess.log; location / { proxy_pass http://127.0.0.1:9020; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }
其中common.conf
为域名通用配置。
ssl_certificate /usr/local/nginx/ssl/fullchain.crt; ssl_certificate_key /usr/local/nginx/ssl/itwxe.com.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 30m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNULL:!MD5:!EXPORT56:!EXP; ssl_prefer_server_ciphers on; proxy_connect_timeout 500; proxy_send_timeout 500; proxy_read_timeout 500; client_max_body_size 100m;
配置好之后访问https://minio-console.itwxe.com
即可访问后台。
同时为了存储桶图片所有人可以访问,需要将存储桶设置为公开。
Python代码实现上传首先,小二作为一个半吊子Python学习者,看了下MinIO官网提供的SDK范例。
安装依赖。
pip install minio
官网示例代码。
from minio import Miniofrom minio.error import S3Errordef main(): # Create a client with the MinIO server playground, its access key # and secret key. client = Minio( "play.min.io", access_key="Q3AM3UQ867SPQQA43P2F", secret_key="zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG", ) # Make "asiatrip" bucket if not exist. found = client.bucket_exists("asiatrip") if not found: client.make_bucket("asiatrip") else: print("Bucket "asiatrip" already exists") # Upload "/home/user/Photos/asiaphotos.zip" as object name # "asiaphotos-2015.zip" to bucket "asiatrip". client.fput_object( "asiatrip", "asiaphotos-2015.zip", "/home/user/Photos/asiaphotos.zip", ) print( ""/home/user/Photos/asiaphotos.zip" is successfully uploaded as " "object "asiaphotos-2015.zip" to bucket "asiatrip"." )if __name__ == "__main__": try: main() except S3Error as exc: print("error occurred.", exc)
于是乎,小二开始依葫芦画瓢,代码如下。
import sysimport timefrom pathlib import Pathimport randomfrom minio import Miniominio_domain = "minio.itwxe.com"minio_access_key = "你的账号名称"minio_secret_key = "你的密码"# 存储桶名称bucket_name = "img"# 存储桶子文件夹名称bucket_name_dir_name = "blog"# 获取minio客户端连接minio_client = Minio(minio_domain, minio_access_key, minio_secret_key)if not minio_client.bucket_exists(bucket_name): # 如果存储桶不存在,则创建 minio_client.make_bucket(bucket_name)# 获取图片参数images = sys.argv[1:]for image in images: # 文件后缀 suffix = Path(image).suffix # 自定义文件名,使用13位时间戳+2位随机数 file_name = "{}{}{}".format(round(time.time() * 1000), random.randint(10, 99), suffix) # 文件存储桶下子路径拼接 remote_full_path_name = "{}/{}".format(bucket_name_dir_name, file_name) # 上传文件 minio_client.fput_object(bucket_name, remote_full_path_name, image) # 打印文件路径 print("https://minio.itwxe.com/{}/{}".format(bucket_name, remote_full_path_name))
写完之后小二不禁感慨,确实比Java简单亿点点,设置一下typora,python 你的python文件位置
。
这张图片就是上传后的路径结果啦,在此,小二也祝愿大家可以愉快的写作。
下一篇:最后一页
昆明信息港讯(昆明日报记者余苏晏)2023年昆明市主城区小升初报名工作将于5月6日0时—5月10日24时进行,六
银保监会:2022年保险业原保险保费收入4 7万亿元,保险业,再保险,投保人,银保监会,保险公司,中国银行保险监
104处路口大货车“右转必停”
总体来看,消费潜力快速释放,相关行业销售收入均超疫情前2019年水平
乐平市气象台2023年05月05日02时35分变更大风黄色预警信号:预计未来6小时内,我市部分地区将出现8-10级雷
1、烈士孙长安生前任滏西基干团营长,又名延握、远握,牺牲于1945年1月28日。2、1998年清明节县关工委、新马头
注意:文中开拓者并未指定性别“他”亦可指代女性文中全糖无刀,可放心观看https: www pixiv net en artwo
胜业电气2022年净利2791 38万同比增长20 2%财务费用减少2023 5 421:47:42挖贝网易凡挖贝网5月4日,胜业电气(87378
三夫户外:北京三夫户外用品股份有限公司控股股东关于公司向特定对象发行股票相关事项承诺的公告
北京商报讯(记者陶凤王柱力)5月4日,苏泊尔回应投资者称,外销方面主要取决于公司主要外贸客户去库存情况及
X 关闭
大盘继续缩量低位盘整 波动或将加大控制好仓位
一季度厨房小家电再下滑 产品黏性需求需加强
市场增长点在哪儿?细分品类存在丰富的增量红利
劳模雷军还能“躺赢”吗?小米发布2022一季度财报净利腰斩
疫情下青海西宁“监管蓝”的“十二时辰”
小江豚搁浅长江岸滩 巡逻人员及时救援助其“回家”
X 关闭