博主头像
HT.

ワクワク

MinIO-QuickUpload 快速上传文件到MinIO

前言

最近在浏览微信订阅号时,偶然发现一篇关于在macOS系统下快速上传文件到MinIO的文章,感觉非常实用。受此启发,我决定为Windows系统开发一个类似的小工具,将文件上传功能集成到鼠标右键菜单中,方便在写博客时快速上传文件。于是,我使用Python开发了这个工具,并将其开源分享给大家。


工具介绍

本工具使用Python开发,主要功能是将文件上传到MinIO对象存储,并将上传功能集成到Windows系统的右键菜单中。用户只需右键点击文件,选择上传选项,即可将文件快速上传到配置好的MinIO存储桶中。

主要功能:

  1. 一键上传:通过右键菜单快速上传文件到MinIO。
  2. 配置简单:首次运行前,只需修改initialize.ini文件,配置MinIO连接信息。
  3. 自动注册:首次运行程序会自动添加右键菜单注册表,并将程序文件和配置文件移动到用户目录下的QuickUpload文件夹中。

使用步骤

  1. 下载工具
    从GitHub仓库下载工具源码或可执行文件:MinIO-QuickUpload
  2. 配置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
  3. 运行程序
    首次运行程序时,会自动完成以下操作:

    • 添加右键菜单注册表项。
    • 将程序文件和配置文件移动到用户目录下的QuickUpload文件夹中。
  4. 上传文件
    右键点击需要上传的文件,选择“上传到MinIO”选项,文件将自动上传到配置的MinIO存储桶中。

技术细节

  1. Python依赖
    本工具依赖于Minio官方库与MinIO进行交互。如果你使用的是源码版本,请确保已安装minio

    pip install minio
  2. 注册表修改
    工具通过修改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}")
  3. 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
本文作者 HT.
发布时间 2025-03-23
许可协议 CC BY-NC-SA 4.0
发表新评论