我在 :accept 中是 image/*
accept="image/*"
但是當我開啟選擇檔案時,如果我選「所有檔案」卻就可以上傳其他檔案格式。。。
這是哪裏少做了什麼?
這本來就沒辦法完全從前端擋
要從後端去檢查上傳檔案的 mime type
才能有效過濾
不然我知道你的 upload 的 url
就可以繞過你前端所做的那些檢查了
"永遠不要相信來自前端的東西"
這裡的 accept 比較像是「預設(可更改)檔案類型」
如果你要「限制(不可改)檔案類型」的話
可以參考使用before-upload
可以參考使用before-upload
這應該是 element-ui 的
vue 本身應該沒有
看錯了
前端檢查只是防使用者操作錯誤,如果要前端檢查可參考
https://stackoverflow.com/questions/18299806/how-to-check-file-mime-type-with-javascript-before-upload
PS. 之後伺服器還是要再檢查才能存檔喔
轉換個思考給你。
一般input file,除非是使用flash。
要不然都是直接啟用檔案總管來控制選擇要上傳的檔案。
依照本機安全性原則,你並不能去限制本機式相關元件。
所以依照javascript的檔案元件的做法。只能做到預設上傳格式。
並不能去做限制的。其檔案總管的檔案盒也只能容許你格式定義。
但「全部檔案」這個還是不會讓你移除掉的。
所以,前端的操作千萬不要想要做啥限制。畢竟所謂的前端,其運做是在其它人的電腦上。
而不是在你的主機上。你只能對你的主機做限制。不能給其它人的電腦做限制。