zoukankan      html  css  js  c++  java
  • 手把手配置图床并一键上传图片

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

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

    网易云图床申请

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

    注册成功后进入对象存储、创建桶(桶为对象存储的容器)。创建好后即可拥有自己的图床,步骤如图所示:

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

    自动管理上传图片

    上传图片需要使用到自己的秘钥,因此首先要找到个人秘钥
    位置如下图所示

    • 构建请求上传图片(文档)
    • 利用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"))
    
    • 图片统一上传

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

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

    # 关于本地存储方案又很多的选择,笔者此处选用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文件执行脚本

    如有不正确之处望之处,谢谢

  • 相关阅读:
    显示非模式窗口和模式窗口
    delphi 版本号
    数字证书和签名
    DLL知道自己的位置
    拖动处理
    驱动配置相关
    python sturct模块操作C数据
    Lambda学习笔记
    【转】update select
    [转]视频格式分类
  • 原文地址:https://www.cnblogs.com/purple-sweet-pottoes/p/9813074.html
Copyright © 2011-2022 走看看