Python中如何搭建或使用图床服务?


Python中如何搭建或使用图床服务?
5 回复

win7 py3
readme = f.read()
UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0xa4 in position 473: illegal multibyte sequence


要搭建或使用图床,核心就两种方式:用现成的云服务,或者自己写一个简单的服务。

1. 使用现有云服务(最简单) 大部分云存储服务商都提供API,本质上就是个现成的图床。比如用七牛云、阿里云OSS、腾讯云COS,你只需要注册账号拿到密钥,然后用他们的SDK上传就行。这里用七牛云SDK qiniu 举个例子:

import qiniu

# 你的密钥,在控制台能找到
access_key = '你的AK'
secret_key = '你的SK'
bucket_name = '你的存储空间名'

# 构建鉴权对象
auth = qiniu.Auth(access_key, secret_key)

# 要上传的本地文件路径和上传后的文件名
local_file = './test.jpg'
key = 'images/test.jpg'  # 七牛云上的文件路径

# 生成上传 Token
token = auth.upload_token(bucket_name, key, 3600)

# 开始上传
ret, info = qiniu.put_file(token, key, local_file)

if info.status_code == 200:
    # 拼接出文件的公开访问链接(前提是空间是公开的)
    base_url = 'http://你的空间域名/'  # 例如:'http://qiniu.example.com/'
    image_url = base_url + ret['key']
    print(f'上传成功!图片地址:{image_url}')
else:
    print('上传失败:', info)

2. 自己搭建简易图床服务 如果你想完全自己控制,可以用 Flask 或 FastAPI 快速写一个。下面是个用 Flask 的最小化示例,只处理单张图片上传和返回URL:

from flask import Flask, request, jsonify
import os
from werkzeug.utils import secure_filename

app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = './uploads'  # 图片保存目录
app.config['MAX_CONTENT_LENGTH'] = 2 * 1024 * 1024  # 限制2MB
ALLOWED_EXTENSIONS = {'png', 'jpg', 'jpeg', 'gif'}

def allowed_file(filename):
    return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS

@app.route('/upload', methods=['POST'])
def upload_file():
    if 'file' not in request.files:
        return jsonify({'error': '没有文件部分'}), 400
    file = request.files['file']
    if file.filename == '':
        return jsonify({'error': '未选择文件'}), 400
    if file and allowed_file(file.filename):
        filename = secure_filename(file.filename)
        # 简单处理,实际应用应该用唯一文件名(如UUID)防止覆盖
        file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
        # 假设你的服务域名为 http://your-domain.com
        image_url = f"http://your-domain.com/uploads/{filename}"
        return jsonify({'url': image_url}), 200
    else:
        return jsonify({'error': '文件类型不允许'}), 400

if __name__ == '__main__':
    os.makedirs(app.config['UPLOAD_FOLDER'], exist_ok=True)
    app.run(debug=True)

运行后,用 curl 或 Postman 向 http://127.0.0.1:5000/upload 发个 POST 请求,表单字段名是 file,就能拿到图片URL。

总结建议 直接用云服务省心,自己搭就是玩控制和练手。

怎么安装的?

直接 pip install qu

我测试没问题

回到顶部