minio批量上传
时间: 2025-04-08 12:35:13 浏览: 48
### 使用 MinIO 进行文件批量上传的教程
以下是基于 Python 的 MinIO SDK 实现文件批量上传的具体方法:
#### 1. 安装依赖
为了使用 MinIO 提供的功能,首先需要安装 `minio` 或者更常用的 `boto3` 库作为 S3 兼容接口。推荐使用官方支持的 `minio-py`。
```bash
pip install minio
```
此命令会安装必要的库来连接 MinIO 并执行操作[^3]。
---
#### 2. 初始化 MinIO 客户端
通过初始化 MinIO 客户端实例建立与 MinIO 服务器之间的通信通道。
```python
from minio import Minio
# 创建 MinIO 客户端
client = Minio(
"localhost:9000", # 替换为实际 MinIO 地址
access_key="your-access-key",
secret_key="your-secret-key",
secure=False # 如果启用了 HTTPS,则设置为 True
)
```
上述代码片段展示了如何配置访问密钥和地址以连接到 MinIO 服务。
---
#### 3. 批量上传逻辑
利用循环机制逐一处理待上传的文件列表,并调用 MinIO SDK 提供的方法完成上传任务。
```python
import os
def upload_files_to_minio(client, bucket_name, local_directory):
"""
将指定目录下的所有文件上传至 MinIO 存储桶中
参数:
client (Minio): 已经初始化好的 MinIO 客户端对象.
bucket_name (str): 要上传的目标存储桶名称.
local_directory (str): 需要上传的本地文件夹路径.
返回值:
None
"""
try:
files = [f for f in os.listdir(local_directory) if os.path.isfile(os.path.join(local_directory, f))]
for file_name in files:
full_path = os.path.join(local_directory, file_name)
with open(full_path, 'rb') as data_stream:
result = client.put_object(
bucket_name=bucket_name,
object_name=file_name,
data=data_stream,
length=os.stat(full_path).st_size,
content_type='application/octet-stream'
)
print(f'Uploaded {file_name} to bucket {bucket_name}. Object path is {result.object_name}')
except Exception as e:
print(f"Error during uploading process: {e}")
# 示例调用
upload_files_to_minio(client=client, bucket_name="my-bucket", local_directory="/path/to/local/files/")
```
该函数实现了遍历目标文件夹中的每一个文件并将它们逐个上传到指定的 MinIO 存储桶内的功能。
---
#### 注意事项
- **错误处理**: 上述脚本包含了基本异常捕获能力,在生产环境中建议进一步增强健壮性设计。
- **性能优化**: 对于大规模文件传输场景下考虑采用并发技术提升效率,比如借助线程池或多进程模型实现异步 I/O 操作。
- **权限管理**: 确保所提供的账户具有足够的权限去创建/写入对应的 Bucket 及其内部资源。
---
阅读全文
相关推荐


















