手把手配置图床并一键上传图片

配置图床,感受已经是学习记录时必备的一项技能。旨在将图片保存在云端服务器,方便查看。html

因笔者使用的七牛图床测试域名已被收回,改用网易云图床(免费),并以此文章做为记录python

网易云图床申请

赠送对象存储50G的存储空间、20G的月流量、100万次get请求、10万次put请求!具体详情页mysql

注册成功后进入对象存储、建立桶(桶为对象存储的容器)。建立好后便可拥有本身的图床,步骤如图所示:sql

  • 手动管理图片对象(略)

自动管理上传图片

上传图片须要使用到本身的秘钥,所以首先要找到我的秘钥
位置以下图所示数据库

  • 构建请求上传图片(文档)
  • 利用SDK上传图片(文档)
  • 图片上传(python SDK)
import nos

access_key = "*********"
secret_key = "*********"
end_point = "****" # 区域名
bucket = "****" # 桶名,存放对象容器

def uploadImg():

    client = nos.Client(
      access_key,
      secret_key,
      end_point=end_point, 
      num_pools=10, # 容许打开的最大 HTTP 链接数
      timeout=5, # 创建链接的超时时间(单位:秒)
      max_retries=4, # 请求失败后最大的重试次数
      enable_ssl=True # 后续与 NOS 服务器进行数据传输、交互时,是否使用 HTTPS
    )

    return client

client = uploadImg()

file_name = "****" # 上传后的文件名称
filePath = "****" # 所需上传的文件路径
client.put_object(bucket, file_name, open(filePath, "rb"))
  • 图片统一上传

思路: 固定文件夹存放图片,每次上传时遍历文件夹内图片,逐一上传服务器

网易云上传文件名称相同时会进行覆盖操做,可将上传过的文件名保存于本地,遍历图片上传时经过比对判断是否上传app

# 关于本地存储方案又不少的选择,笔者此处选用mysql
    try:
        #获取一个数据库链接,注意若是是UTF-8类型的,须要制定数据库
        conn = pymysql.connect(host='localhost',user='root',passwd='123456',db='数据库名',port=3306,charset='utf8')
        cur = conn.cursor() #获取一个游标
        cur.execute('select imgName from yunImgs')
        datas = cur.fetchall()
        data = []
        for values in datas:
            data.append(values[0])

        client = uploadImg()

        imgsDir = sys.path[0] + "/imgs"
        fileNames = os.listdir(imgsDir)
        upCount = 0

        for file_name in fileNames:

            if file_name == ".DS_Store" or file_name in data:
                continue

            try:
                filePath = imgsDir + "/" + file_name
                sql = "insert into yunImgs(imgName) values('" + file_name + "')"
                cur.execute(sql)
                conn.commit()
                client.put_object(bucket, file_name, open(filePath, "rb"))
                print(file_name,"上传完成")
                upCount += 1
            except Exception as e:
                print(file_name + "上传出错: " + e)
                conn.rollback()

        cur.close() #关闭游标
        conn.close() #释放数据库资源
        print("图片上传完毕:新上传", str(upCount), "张图片")
    except  Exception as e :
        print("上传出错: " + e)
  • 一键上传图片

利用上述代码生成python脚本,上传时只需执行此文件便可。学习

为方便执行脚本,笔者提出3种较为简单的执行思路测试

  1. 终端 使用alias取别名
  2. 使用Alfred设置工做流程
  3. 自定义command文件执行脚本

若有不正确之处望之处,谢谢fetch

相关文章
相关标签/搜索