之前發布的代碼,由於熬夜精神狀態不佳,寫代碼的時候犯了最低級的邏輯錯誤,本來應該是用 if(判斷如果設置了 kv 環境變量),則(圖片首次加載時將圖片寫入 kv 儲存當中),但是昨天也不知道大腦短路了還是怎麼的,把 if 條件語句寫反了,寫成了 if(如果沒有設置 kv 環境變量),則(圖片首次加載時將圖片寫入 kv 儲存當中),但很明顯如果沒有設置 kv 環境變量,根本不可能成功寫入 kv 儲存成功,導致昨天部分大佬部署出現:Error 1101 Worker threw exception,設置了 kv 環境變量的大佬雖然程序能夠正常運行,但是後台管理無法記錄圖片,因為程序不會執行寫入操作。對此我感到非常抱歉,給各位大佬造成了困擾,現在問題應該是修復了,煩請各位大佬部署最新版本的代碼,也感謝 @雾山 @mikj521 @那山很優雅 @3514088137 @hiing @telnetpig @mourner 等等大佬們的問題反饋,由於連續熬了幾天夜,昨天身體已經實在頂不住了,所以睡覺去了,沒能及時回復,抱歉!
之前隨口一說 GIthub 上超過 500 Star 就更新圖片管理功能,本來想的是一個小小的圖床程序根本不可能達到 500 Star,但沒想到各位大佬十分熱情,好家伙,一下子沒過幾個月時間就給我點到 600+ Star 了。沒辦法既然是答應了的事情,只能是硬著頭皮把圖片管理功能寫出來。
雖然在開發的過程中遇到了許多困難,花費的時間比我預想中的多了許多,發布的時間也是一拖再拖,在連續熬了幾個夜晚之後,終於趕在春節之前發布這次的更新,也提前在此新春佳節即將來臨之際祝各位大佬春節快樂!在新的一年裡能夠實現自己心中的願望!
廢話不多說,直接上代碼:
https://github.com/cf-pages/Telegraph-Image
之前沒有部署過的大佬,直接 fork 本倉庫就可以去 Cloudflare Pages 後台進行部署了。
下面就來介紹本次更新的主要內容:
1、萬眾期待的圖片管理功能,默認是關閉的,如需開啟請部署完成後前往後台依次點擊 “設置”->“函數”->”KV 命名空間綁定”->“編輯綁定”->” 變量名稱” 填寫:img_url “KV 命名空間” 選擇你提前創建好的 KV 儲存空間,開啟後訪問 http (s):// 你的域名 /admin 即可打開後台管理頁面
圖片 [1]-Telegraph-Image 免費自建圖床新增後台圖片管理 - 百科資源
圖片 [2]-Telegraph-Image 免費自建圖床新增後台圖片管理 - 百科資源
(如何創建 KV 儲存空間,請參考: https://github.com/xyTom/Url-Shorten-Worker/#%E5%8E%BBworkers-kv%E4%B8%AD%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E5%91%BD%E5%90%8D%E7%A9%BA%E9%97%B4)
2、後台管理頁面新增登錄驗證功能,默認也是關閉的,如需開啟請部署完成後前往後台依次點擊 “設置”->“環境變量”->” 為生產環境定義變量”->“編輯變量”
“變量名稱” “值”
BASIC_USER = <後台管理頁面登錄用戶名稱>
BASIC_PASS = <後台管理頁面登錄用戶密碼>
圖片 [3]-Telegraph-Image 免費自建圖床新增後台圖片管理 - 百科資源
當然你也可以不設置這兩個值,這樣訪問後台管理頁面時將無需驗證,直接跳過登錄步驟,這一設計使得你可以結合 Cloudflare Access 進行使用,實現支持郵件驗證碼登錄,Microsoft 賬戶登錄,Github 賬戶登錄等功能,能夠與你域名上原有的登錄方式所集成,無需再次記憶多一組後台的賬號密碼,添加 Cloudflare Access 的方式請參考官方文檔,也歡迎各位大佬分享教程,注意需要保護路徑包括 /admin 以及 /api/manage/*
3、新增圖片總數量統計
當開啟圖片管理功能後,可在後台頂部查看記錄中的圖片數量
圖片 [4]-Telegraph-Image 免費自建圖床新增後台圖片管理 - 百科資源
4、新增圖片文件名搜索
當開啟圖片管理功能後,可在後台搜索框使用圖片文件名稱,快速搜索定位需要管理的圖片
圖片 [5]-Telegraph-Image 免費自建圖床新增後台圖片管理 - 百科資源
5、新增圖片狀態顯示
當開啟圖片管理功能後,可在後台查看圖片當前的狀態 {“ListType”: “None”, “TimeStamp”: 1673984678274 }
ListType 代表圖片當前是否在黑白名單當中,None 則表示既不在黑名單中也不在白名單中,White 表示在白名單中,Block 表示在黑名單中,TimeStamp 為圖片首次加載的時間戳,如開啟的圖片審查 API,則這裡還會顯示圖片審查的結果用 Label 標識
圖片 [6]-Telegraph-Image 免費自建圖床新增後台圖片管理 - 百科資源
6、新增黑名單功能
當開啟圖片管理功能後,可在後台手動為圖片加入黑名單,加入黑名單的圖片將無 ** 常加載
圖片 [7]-Telegraph-Image 免費自建圖床新增後台圖片管理 - 百科資源
7、新增白名單功能
當開啟圖片管理功能後,可在後台手動為圖片加入白名單,加入白名單的圖片無論如何都會正常加載,可繞過圖片審查 API 的結果
圖片 [8]-Telegraph-Image 免費自建圖床新增後台圖片管理 - 百科資源
8、新增記錄刪除功能
當開啟圖片管理功能後,可在後台手動刪除圖片記錄,即不再後台顯示該圖片,除非有人再次上傳並加載該圖片,注意由於圖片儲存在 telegraph 的伺服器上,我們無法刪除上傳的原始圖片,只能通過上述第 6 點的黑名單功能屏蔽圖片的加載
9、新增程序運行模式:白名單模式
當開啟圖片管理功能後,除了默認模式外,這次更新還新增了一項新的運行模式,在該模式下,只有被添加進白名單的圖片才會被加載,上傳的圖片需要審核通過後才能展示,最大程度的防止不良圖片的加載,如需開啟請設置環境變量:WhiteList_Mode==”true”
10、新增後台圖片預覽功能
當開啟圖片管理功能後,可在後台預覽通過你的域名加載過的圖片,點擊圖片可以進行放大,縮小,旋轉等操作
圖片 [9]-Telegraph-Image 免費自建圖床新增後台圖片管理 - 百科資源
這次的更新內容很多,可以算是重量級更新了,整個程序的後端代碼幾乎全部重寫了一遍,也花了不少時間,希望各位大佬覺得好用的話,看在我連續熬夜肝了這麼久的份上能否幫我在 Github 上點個免費的 Star,也可以幫我多多宣傳一下,分享給更多的人,非常感謝!
已經部署了的,如何更新?
其實更新非常簡單,只需要參照上面的更新內容,先進入到 Cloudflare Pages 後台,把需要使用的環境變量提前設置好並綁定上 KV 命名空間,然後去到 Github 你之前 fork 過的倉庫依次選擇 “Sync fork”->”Update branch” 即可,稍等一會,Cloudflare Pages 那邊檢測到你的倉庫更新了之後就會自動部署最新的代碼了
圖片 [10]-Telegraph-Image 免費自建圖床新增後台圖片管理 - 百科資源
一些注意事項:
Cloudflare KV 每天只有 1000 次的免費寫入額度,每有一張新的圖片加載都會占用該寫入額度,如果超過該額度,圖片管理後台將無法記錄新加載的圖片
每天最多 100,000 次免費讀取操作,圖片每加載一次都會占用該額度(在沒有緩存的情況下,如果你的域名在 Cloudflare 開啟了緩存,當緩存未命中的時候才會占用該額度),超過黑白名單等功能可能會失效
每天最多 1,000 次免費刪除操作,每有一條圖片記錄都會占用該額度,超過將無法刪除圖片記錄
每天最多 1,000 次免費列出操作,每打開或刷新一次後台 /admin 都會占用該額度,超過將進行後台圖片管理
絕大多數情況下,該免費額度都基本夠用,並且可以稍微超出一點,不是已超出就立馬停用,且每項額度單獨計算,某項操作超出免費額度後只會停用該項操作,不影響其他的功能,即即便我的免費寫入額度用完了,我的讀寫功能不受影響,圖片能夠正常加載,只是不能在圖片管理後台看到新的圖片了。
如果你覺得免費額度實在不夠用,可以自行向 Cloudflare 購買 Cloudflare Workers 的付費版本,每月 $5 起步,按量收費,沒有上述額度限制(怎麼感覺我在給 Cloudflare 打廣告?Cloudflare 趕緊打錢,把廣告費結一下 /doge 手動狗頭)
上述注意事項所得出的結論是經過多天的反復測試得出的,基本應該是成立的,但不排除後期 Cloudflare 突然改變相關政策。其次,本次更新所發布的全部功能,都經過了多次的反復測試,如在使用過程中各位大佬遇到 bug,很有可能是 Cloudflare 或是瀏覽器緩存造成的,可以嘗試先清除一下緩存再試,另外針對環境變量所做的更改將在下次部署時生效,如更改了環境變量,請記得重新部署。
圖片 [11]-Telegraph-Image 免費自建圖床新增後台圖片管理 - 百科資源
如果嘗試了清除緩存,重新部署還是有問題的話,可以在 github 上提 issue 反饋,畢竟這次更新的功能較多,然後我一個人的水平和時間都比較有限,雖然已經是做了反復測試,但還是很難說是把每一個功能,每一種情況都測試到,出現 bug 在所難免。能趕在新年之前發布,作為送給各位大佬的新年禮物,對於我個人來說已經是很不容易了,開發過程中遇到了許多困難,曾多次想要放棄,想直接鴿了算了,但是一想到有這麼多大佬(600+ stars)在默默的支持我,在 Github 上給我點小星星,我就覺得不能辜負了各位大佬的好意,無論如何都要咬牙把圖片管理功能更新出來。