徐向博 / Imin.

前端通过Python接口上传文件到阿里云OSS
作者:Imin 时间:2019-07-18 分类: Python

最近在瞎折腾的时候,发现服务器带宽不够用了,本想升级一下带宽,但是看了看钱包还是算了,上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()

有疑问或错误之处欢迎留言交流!

本文标签: oss

超人下拉系统: 会写Python 的人好厉害的了 2019-07-25 13:59