前端 JS 直接上传七牛云私有空间

更新日期: 2024-09-13 阅读次数: 314 字数: 379 分类: CDN

之前的上传方案,是通过我的服务器中转的,如果文件超过 10M,走自己服务器不太靠谱。带宽太小。 而且目前的方案是没有使用文件分片上传的,也会有内存隐患。

我想换个方案,对于文件资料,改用前端直传三方云存储的方案。

这个有现成的 sdk 和代码示例,就是文件直传七牛云私有空间。跟直传阿里云 oss,和腾讯对象存储是一样的机制。

之前整理过类似的方案,只不过是上传到公共空间的,没有限制访问:

ant design 组件上传视频直传七牛云

七牛云官方文档参考:

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 聊聊, 查看更多联系方式