写在前面,由于在Heorku上运行程序过程中创建的文件将不会永久保存,而且会在一天内被重置。即用户上传的文件无法像在本地一样保存在服务器端的文件夹。因此将媒体文件保存在cloudinary(类似七牛云)。
如果要直接使用heroku的cloudinary插件需要绑定海外的信用卡🙂,所以直接嵌入源代码。
配置
我是写在
.env
文件里面,在heroku需要手动设置
# 在cloudinary主页的控制台
CLOUD_NAME=****
API_KEY=****
API_SECRET=****
CLOUDINARY_URL=****
# 记得大写
heroku config:set API_KEY=****
一些基本操作
cors = CORS() # flask-cors用于跨域
cors.init_app(app)
@cross_origin()
具体实现
import cloudinary
from cloudinary.uploader import upload
def upload_cloudinary(file_to_upload):
"""上传函数"""
cloudinary.config(
cloud_name=os.getenv('CLOUD_NAME'),
api_key=os.getenv('API_KEY'),
api_secret=os.getenv('API_SECRET'))
# cloudinary.uploader.upload 传入文件流或本地文件名
# 设置resource_type="auto" 可以上传任意格式文件
upload_result = upload(file_to_upload, resource_type="auto")
# 返回上传结果 url 和文件类型
return upload_result['url'], upload_result['format']
参考链接
https://devcenter.heroku.com/articles/cloudinary