MinIO-QuickUpload 快速上传文件到MinIO
前言
最近在浏览微信订阅号时,偶然发现一篇关于在macOS系统下快速上传文件到MinIO的文章,感觉非常实用。受此启发,我决定为Windows系统开发一个类似的小工具,将文件上传功能集成到鼠标右键菜单中,方便在写博客时快速上传文件。于是,我使用Python开发了这个工具,并将其开源分享给大家。
工具介绍
本工具使用Python开发,主要功能是将文件上传到MinIO对象存储,并将上传功能集成到Windows系统的右键菜单中。用户只需右键点击文件,选择上传选项,即可将文件快速上传到配置好的MinIO存储桶中。
主要功能:
- 一键上传:通过右键菜单快速上传文件到MinIO。
- 配置简单:首次运行前,只需修改
initialize.ini
文件,配置MinIO连接信息。 - 自动注册:首次运行程序会自动添加右键菜单注册表,并将程序文件和配置文件移动到用户目录下的
QuickUpload
文件夹中。
使用步骤
- 下载工具
从GitHub仓库下载工具源码或可执行文件:MinIO-QuickUpload 配置MinIO信息
打开initialize.ini
文件,填写MinIO的连接信息,包括:endpoint
:MinIO服务器地址access_key
:MinIO访问密钥secret_key
:MinIO私有密钥bucket_name
:目标存储桶名称secure
:是否HTTPS连接
[MinIO] endpoint = 你的MinIO连接地址,例如192.168.79.128:9000 access_key = 你的access-key secret_key = 你的secret-key bucket_name = 存储桶名称 secure = False # 默认为False,如果使用 HTTPS,请设置为 True
运行程序
首次运行程序时,会自动完成以下操作:- 添加右键菜单注册表项。
- 将程序文件和配置文件移动到用户目录下的
QuickUpload
文件夹中。
- 上传文件
右键点击需要上传的文件,选择“上传到MinIO”选项,文件将自动上传到配置的MinIO存储桶中。
技术细节
Python依赖
本工具依赖于Minio
官方库与MinIO进行交互。如果你使用的是源码版本,请确保已安装minio
:pip install minio
注册表修改
工具通过修改Windows注册表,将上传功能添加到右键菜单中。相关代码如下:def add_registry_entry(target_script_path): """ 新增注册表项,支持单个文件和多个文件,但不支持文件夹 :param target_script_path: 脚本的绝对路径 :return: """ try: reg_path_single = r"*\shell\MinIOQuickUpload" # 单个文件 reg_path_multi = r"Directory\shell\MinIOQuickUpload" # 多个文件 key = winreg.CreateKey(winreg.HKEY_CLASSES_ROOT, reg_path_single) winreg.SetValue(key, "", winreg.REG_SZ, "上传到MinIO") winreg.CloseKey(key) command_path_single = reg_path_single + r"\command" key = winreg.CreateKey(winreg.HKEY_CLASSES_ROOT, command_path_single) winreg.SetValue(key, "", winreg.REG_SZ, f'"{target_script_path}" "%1"') winreg.CloseKey(key) key = winreg.CreateKey(winreg.HKEY_CLASSES_ROOT, reg_path_multi) winreg.SetValue(key, "", winreg.REG_SZ, "上传到MinIO") winreg.CloseKey(key) command_path_multi = reg_path_multi + r"\command" key = winreg.CreateKey(winreg.HKEY_CLASSES_ROOT, command_path_multi) winreg.SetValue(key, "", winreg.REG_SZ, f'"{target_script_path}" "%1"') winreg.CloseKey(key) except Exception as e: show_error_message(f"添加注册表项时出错:{e}")
MinIO上传逻辑
使用boto3
库实现文件上传功能:def put_file(self, bucket_name, filename, file_path): """ 上传文件 :param bucket_name: 桶名 :param filename: 文件名 :param file_path: 本地文件路径 :return: """ try: self.client.fput_object(bucket_name, filename, file_path) except S3Error as e: print("[error]:", e)
参考
结语
这个工具虽然简单,但极大地提升了我的工作效率,尤其是在写博客时需要频繁上传文件时。如果你也有类似的需求,欢迎下载并使用这个工具。如果你有任何建议或问题,欢迎在GitHub上提交Issue或PR。
GitHub地址:MinIO-QuickUpload
希望这篇博客对你有所帮助!如果你觉得这个工具不错,别忘了给个Star支持一下哦~ 😊
MinIO-QuickUpload 快速上传文件到MinIO
http://www.perlink.cc/index.php/%E7%AC%94%E8%AE%B0/62.html