手把手配置圖床並一鍵上傳圖片
阿新 • • 發佈:2018-11-10
配置圖床,感覺已是學習記錄時必備的一項技能。旨在將圖片儲存在雲端伺服器,方便檢視。
因筆者使用的七牛圖床測試域名已被收回,改用網易雲圖床(免費),並以此文章作為記錄
網易雲圖床申請
- 網易雲登入註冊
贈送物件儲存50G的儲存空間、20G的月流量、100萬次get請求、10萬次put請求!具體詳情頁
註冊成功後進入物件儲存、建立桶(桶為物件儲存的容器)。建立好後即可擁有自己的圖床,步驟如圖所示:
- 手動管理圖片物件(略)
自動管理上傳圖片
上傳圖片需要使用到自己的祕鑰,因此首先要找到個人祕鑰
位置如下圖所示
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種較為簡單的執行思路
如有不正確之處望之處,謝謝