前端通过Python接口上传文件到阿里云OSS
2019-07-18 本文已影响0人
徐向博
最近在瞎折腾的时候,发现服务器带宽不够用了,本想升级一下带宽,但是看了看钱包还是算了,上OSS吧!所以就有了挖坑之路,,,
本文实现前端发送文件给服务器,由服务器上传到阿里云OSS,接口使用Python编写。阿里云官方也提供了JS直接上传的方法,但是为了练习一下Python,还是自己写接口吧 ,生命在于折腾 :)
# -*- coding: utf-8 -*-
import json
import time
from flask import request
from flask import Flask
from flask_cors import CORS
import os
import shutil
import oss2
# 这些个 嘤嘤嘤 需要替换成自己的key,OSS控制台可以拿到
access_key_id = os.getenv('OSS_TEST_ACCESS_KEY_ID', '嘤嘤嘤')
access_key_secret = os.getenv('OSS_TEST_ACCESS_KEY_SECRET', '嘤嘤嘤')
bucket_name = os.getenv('OSS_TEST_BUCKET', '嘤嘤嘤')
endpoint = os.getenv('OSS_TEST_ENDPOINT', '嘤嘤嘤')
# 确认参数
for param in (access_key_id, access_key_secret, bucket_name, endpoint):
assert '<' not in param, '请设置参数:' + param
# 创建Bucket对象
bucket = oss2.Bucket(oss2.Auth(access_key_id, access_key_secret), endpoint, bucket_name)
# 接收文件
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def index():
# 上传文件到服务器
file = request.files.get('file')
if file is None:
return '没有检索到文件'
else:
# 上传文件到阿里云OSS
res = bucket.put_object(file.filename, file)
if res.status == 200:
# 上传成功,获取文件带签名的地址,返回给前端
url = bucket.sign_url('GET', file.filename, 60)
return json.dumps(url)
if __name__ == '__main__':
CORS(app, supports_credentials=True)
app.run()
有疑问或错误之处欢迎留言交流!原文地址:http://blog.xuxiangbo.com/im-52.html