似乎與此相關的每個問題都在詢問有關按檔案大小限制上傳等問題。
我正在使用 Bottle(類似于 Flask)創建應用程式的在線演示。該程式的一部分要求用戶下載一個非常具體的影像,然后上傳它以查看對該影像進行的裁剪操作的結果。影像非常特別,所以我試圖節省用戶使用演示的時間,同時也防止偏移的影像檔案被上傳到服務器。
我的問題是,是否可以將上傳限制為僅該特定影像。有沒有辦法知道上傳的影像不是那個確切的影像?
對于存根測驗,我只是做了以下事情:
myimg = request.files.get("myimg")
fname = myimg.filename
if fname == "bob.jpeg" or fname == "sally.jpeg":
do what the app needs to do
else:
return "Only the demo images are allowed"
顯然,通過檔案名限制它是愚蠢的,因為任何人都可以重命名一個新檔案。
我在想也許可以將影像轉換為某種特殊的陣列,然后我可以比較兩個陣列,還是有更優雅的解決方案?
任何幫助/想法表示贊賞。
uj5u.com熱心網友回復:
要確認上傳的檔案是否確實是您期望的檔案,只需檢查其位元組并將它們與已知的良好檔案進行比較。您可以自己校驗傳入位元組(例如使用hashlib),也可以使用filecmp.cmp(我認為這更簡單,假設您在服務器可以讀取的磁盤上有可接受影像的副本)。
例如:
uploaded_img = request.files.get("myimg")
if not filecmp.cmp(uploaded_img.filename, "/path/to/known/good/image", shallow=False):
raise ValueError("An unexpected file was uploaded")
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/467333.html
