• 1
  • 2
分享
  • 【原创】使用七牛接口实现图片和文件一键上传
  • sylan215 2018-09-27 19:30:04 字数 2356 阅读 1491 收藏 2

本文主要介绍使用七牛提供的接口把七牛云作为图床,用 Python 实现图片上传和文件上传的脚本实现,可以支持按文件夹批量上传。

搭建过网站的同学,一定都涉及到图片上传和文件上传的问题,最近为了弄图片资源接触了一下云存储,还挺挺好用。

之前如果我们把图片资源存储到本机服务器,那就每次写文章的时候都需要准备一堆的图片,并且要上传到对应的相对目录上去,如果用了云存储(不限七牛),好处就是需要的资源直接上传,然后生成一个链接来使用就行了,Markdown 语法对链接的支持也很好,恩,可以搞一下。

不过,又有了新问题,就是是用云存储,得先经过登录->打开对象存储->打开内容管理->上传,然后填入上传后的相对目录,并手动选择本地文件,是不是很麻烦?

所以本次是提供了一个一键上传资源的脚本(仅针对七牛云),实现的效果就是,输入项目目录和文件本地地址后,自动上传所有文件到云端,并生成可使用 URL。

来,直接上代码:

# -*- coding: utf-8 -*-
import os
import sys
from qiniu import Auth, put_file
if 3 != len(sys.argv):
    print('[Usage] %s [dir_set] [filepath]' % os.path.basename(sys.argv[0]))
    sys.exit(0)
else:
    # dir_set 的格式为 image/upload-qiniu/ ,注意末尾带反斜杠/
    dir_set = sys.argv[1]
    file_path = sys.argv[2]
# 个人中心->密匙管理->AK
access_key = '你的AccessKey'
# 个人中心->密匙管理->SK
secret_key = '你的SecretKey'
# 七牛空间名
bucket_name = '你的存储空间名'
qiniu_auth = Auth(access_key, secret_key)
def upload_qiniu(input_path):
    #upload single file to qiniu
    filename = os.path.basename(input_path)
    key = '%s%s' % (dir_set, filename)
    token = qiniu_auth.upload_token(bucket_name, key)
    ret, info = put_file(token, key, input_path, check_crc=True)
    if ret and ret['key'] == key:
        print('%s done' % ('http://www.sylan215.com/' + dir_set + filename))
    else:
        print('%s error' % ('http://www.sylan215.com/' + dir_set + filename))
def upload_all_files(input_path):
    if os.path.isfile(input_path):
        upload_qiniu(input_path)
    elif os.path.isdir(input_path):
        dirlist = os.walk(input_path)
        for root, dirs, files in dirlist:
            for filename in files:
                upload_qiniu(os.path.join(root, filename))
    else:
        print('Please input the exists file path!')
if __name__ == "__main__":
    upload_all_files(file_path)

使用说明

1. 请先安装 qiniu 的依赖库:

python -m pip install qiniu

2. 修改绑定域名

修改代码中的 http://www.sylan215.com 为自己在七牛云存储绑定的域名

3. 带两个参数执行脚本

第一个参数是上传后的目录,第二个参数是文件在本地的地址,支持文件夹。
其中第一个参数的目录格式为:image/test/。
比如如下的命令:

upload_to_qiniu.py image/test/ d:\test.png

运行后,上传后的文件地址就类似:http://www.sylan215.com/image/test/test.png

PS:已使用 Python2.7 和 Python3.4 亲测有效,其他 Python 版本如果有异常,请反馈。

更详细的说明请跳转到项目地址:https://github.com/sylan215/upload-to-qiniu,欢迎大家 star,并一起丰富这个脚本的功能。

本文首发于公众号「sylan215」,十年测试老兵的原创干货,关注我,涨姿势!

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   测试江湖:聊聊“情商”那些事儿  程序员们,你们是否也曾在提到“情商”时,脑海中浮现出各种“梗”和“表情包”?实际上,每当看到那些把程序员描绘成情商“退化”到极点的故事,我都忍不住想笑。在这背后,实际上揭示了测试同学这一群体在传统印象中可能被认为具有较高技术能力但较低情商水平的真相。在我所熟悉的IT圈子里,我真没遇到过几个真正的“极品”。相反,许多程序员都具备出色的技术能力,同时在应对职场挑战时也展现出了坚韧不拔的精神。  这些流行的“情商故事”大多是由外行人杜撰出来开玩笑的成分。说不定,这些故事的杜撰者自己本身还是个程序员!言归正传,让我们来聊聊程序员中那些比较典型的“情商不足”表现吧!...
            0 0 110
            分享
          • 性能测试,是结合被测系统应用架构、业务场景和实现细节、逻辑,对软件响应时间、处理速率、容错能力等进行分析测试,找到系统的性能瓶颈,并确认问题得到解决的过程。由于工作需要,对性能测试缺陷分类进行了整理,这篇博客,聊聊常见的性能缺陷以及表现方式。。。性能测试缺陷分类缺陷类型缺陷描述硬件磁盘空间CPUIO读写速率内存网络带宽网络波动CDN延时丢包应用JVM代码逻辑配置JDK版本底层配置参数配置数据库索引锁表空间慢SQL数据量中间件超时线程池缓存策略最大连接数通信实现方式负载均衡一、硬件磁盘空间:磁盘空间不足导致系统运行变慢,文件、日志等无法生成存放导致的性能瓶颈;CPU:CPU的核心功能是解释计算机...
            13 13 1244
            分享
          •   随着产品的不断升级,软件测试人员在研发团队中的比重越来越大,因为前期发展较晚,所以目前这方面的人才缺口很大。  1、测试人员是保证企业赖以生存的关键;  先来看一个因为测试人员的疏漏能给企业造成巨大损失的案例,最有代表性的就是2019年“拼多多100元无门槛消费券”漏洞,由于项目测试不到位,导致很多用户仅用了0.4元就给自己充值了100元的话费,事件虽发生在半夜,但是拼多多依旧损失严重,网络流传损失金额达200亿元,很多人担心拼多多就此倒闭。  这件事也给了企业重重一击,也让他们认识到测试的重要性,这件事不只是个例,每年企业因为测试没有做到位而造成的损失的事件早已屡见不鲜,也再次印证了测试...
            0 0 668
            分享
          •   摘要:当前国内企业的数字化转型正如火如荼的进行着,而随着各类软件应用在性能、功能、安全性等重要维度的要求越来越高,业界也对软件测试行业提出了新的挑战。  以兼容测试为例,传统的兼容测试因整体的测试管理较为陈旧,导致了测试流程规范性弱、测试工作效率低、人力成本高等种种问题,从而阻碍了测试需求单位的数字化转型步伐,还会因软件应用质量的问题给企业带来软件体验不佳、用户数量下降、行业排名下滑等严重后果。  Testin云测试专注于软件测试行业十数年,拥有丰富的测试行业经验,在业界率先把最新的AI技术广泛运用于兼容测试,为广大客户打造出数字化时代的一站式兼容测试服务,引领智能测试时代的技术风向。  ...
            0 0 1038
            分享
          • 1、移动端性能监测的主要途径移动端性能监测的主要途径有三种:一是开发工具自带的监测工具,例如xcode自带的instrument,Android studio自带的Android monitor;二是使用第三方SDK;三是自行开发检测代码。三种途径各有利弊。开发工具自带的监测工具,包含了很多强大的监测功能,且持续迭代更新,使用方便,为开发阶段的性能测试提供强有力的支持。但是只能在开发工具内部使用,不能独立使用在其他产品周期内。专门用于性能监测和用户行为、属性分析的第三方SDK,比如Bugly,OneAPM,听云,Firebase,把它们接入项目可以进行性能监测,这些第三方的工具工作原...
            0 2 3473
            分享
      • 51testing软件测试圈微信