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
我测试没问题

