之前的上传方案,是通过我的服务器中转的,如果文件超过 10M,走自己服务器不太靠谱。带宽太小。 而且目前的方案是没有使用文件分片上传的,也会有内存隐患。
我想换个方案,对于文件资料,改用前端直传三方云存储的方案。
这个有现成的 sdk 和代码示例,就是文件直传七牛云私有空间。跟直传阿里云 oss,和腾讯对象存储是一样的机制。
之前整理过类似的方案,只不过是上传到公共空间的,没有限制访问:
七牛云官方文档参考:
https://developer.qiniu.com/kodo/1283/javascript
私有空间专用 token 生成
之前写的接口是用于公开空间的 token 生成, 如果要支持私有空间生成,需要再增加一个接口。
但,实际上,除了 bucket 参数不一样,其他都完全一下。就是生成个 token 罢了。
token 是否可以复用
测试了一下,token 确实可以复用,例如一个token,可以上传多个文件。
只要注意一下,不要过有效时间就行了。否则会报错误:
{"error":"expired token"}
测试上传 token 是否有效
安装 Python 的七牛云依赖:
pip install qiniu
测试代码:
# -*- coding: utf-8 -*-
# flake8: noqa
from qiniu import put_file, etag
import qiniu.config
localfile = "./main.py"
token = "xxxx"
key = "tx/qms/test/main.py"
ret, info = put_file(token, key, localfile, version="v2")
print(info)
assert ret["key"] == key
assert ret["hash"] == etag(localfile)
返回信息:
{"hash":"FhvVmGhOAlnu32DEJet6dC5hC06q","key":"tx/qms/test/main.py"}
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式