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

文章目录

    之前的上传方案,是通过我的服务器中转的,如果文件超过 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 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式