手把手配置圖牀並一鍵上傳圖片

配置圖牀,感受已經是學習記錄時必備的一項技能。旨在將圖片保存在雲端服務器,方便查看。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

相關文章
相關標籤/搜索