MinIO Share
Upload files to MinIO and generate shareable links for users with Markdown formatting.
Requirements
Ensure these environment variables are set:
MINIO_API_URL- MinIO S3 API endpoint (e.g.,https://minio-api.example.com)MINIO_CONSOLE_URL- MinIO Web Console URL (e.g.,https://minio.example.com)MINIO_ACCESS_KEY- MinIO access keyMINIO_SECRET_KEY- MinIO secret keyMINIO_BUCKET- Default bucket name for uploads
Installation
Install the minio Python package if not already available:
pip install minio
Usage
Basic Upload
Upload a file with Markdown output:
python3 scripts/minio_upload.py /path/to/file.txt
Use Title as Filename
Upload with a custom title (sanitized for safe filenames):
python3 scripts/minio_upload.py /path/to/video.mp4 --title "My Video Title"
This will save the file as My_Video_Title.mp4 (special characters replaced with underscores).
Custom Object Name
Specify a custom name for the uploaded object:
python3 scripts/minio_upload.py /path/to/file.txt --name custom-name.pdf
Adjust Link Expiry
Change the presigned URL expiry time (default: 7 days):
python3 scripts/minio_upload.py /path/to/file.txt --expiry 30
JSON Output
Get structured output:
python3 scripts/minio_upload.py /path/to/file.txt --json
Plain Text Output
Get just the URL:
python3 scripts/minio_upload.py /path/to/file.txt
Workflow
When a user asks to send/share/upload a file or download a video:
- Check environment variables - Verify MINIO_* variables are set
- Download the file (if it's a URL) to a temporary location
- Upload the file using
scripts/minio_upload.py:- For videos: Use
--title "Video Title"to set a meaningful filename - For images: They will be displayed inline with Markdown
- For videos: A video player will be included in the output
- For videos: Use
- Copy the Markdown output to your response
Filename Sanitization
When using --title, the script automatically:
- Replaces illegal characters (
< > : " / \ | ? *) with underscores - Collapses multiple spaces/underscores
- Trims to 100 characters max
- Preserves Chinese characters, letters, numbers
Output Formats
Markdown Output (Default)
Provides rich formatting with:
- File information (name, size, expiry)
- Inline image preview (for image files)
- Video player (for video files)
- Clickable download link
- Console preview link
- Plain text URL for copying
Example Markdown Output
📄 **文件名**: `sample.mp4`
📦 **大小**: 44.51 MB
⏱️ **链接有效期**: 7 天
🌐 **[sample.mp4](...)**
Error Handling
Common issues:
- Missing environment variables - Check all MINIO_* vars are set
- Bucket doesn't exist - Ensure MINIO_BUCKET exists or create it first
- File not found - Verify the file path is correct
- Connection error - Check MINIO_API_URL is accessible
- SSL errors - Use
--insecureflag if needed (not recommended for production)