iT邦幫忙

1

vue element ui 的 upload,即使限制照片格式,卻還是可以上傳?

我在 :accept 中是 image/*

accept="image/*"

但是當我開啟選擇檔案時,如果我選「所有檔案」卻就可以上傳其他檔案格式。。。
這是哪裏少做了什麼?

https://imgur.com/b47ZY5z

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
3
dragonH
iT邦超人 5 級 ‧ 2020-07-21 11:51:03
最佳解答

這本來就沒辦法完全從前端擋

要從後端去檢查上傳檔案的 mime type

才能有效過濾

不然我知道你的 upload 的 url

就可以繞過你前端所做的那些檢查了

"永遠不要相信來自前端的東西"

1
海綿寶寶
iT邦大神 1 級 ‧ 2020-07-21 11:45:34

這裡的 accept 比較像是「預設(可更改)檔案類型」

如果你要「限制(不可改)檔案類型」的話
可以參考使用before-upload

dragonH iT邦超人 5 級 ‧ 2020-07-21 11:48:21 檢舉

可以參考使用before-upload

這應該是 element-ui 的

vue 本身應該沒有

看錯了

Tree iT邦新手 3 級 ‧ 2020-07-21 15:34:35 檢舉
淺水員 iT邦大師 6 級 ‧ 2020-07-21 15:54:09 檢舉

前端檢查只是防使用者操作錯誤,如果要前端檢查可參考
https://stackoverflow.com/questions/18299806/how-to-check-file-mime-type-with-javascript-before-upload

PS. 之後伺服器還是要再檢查才能存檔喔

2

轉換個思考給你。

一般input file,除非是使用flash。
要不然都是直接啟用檔案總管來控制選擇要上傳的檔案。

依照本機安全性原則,你並不能去限制本機式相關元件。

所以依照javascript的檔案元件的做法。只能做到預設上傳格式。
並不能去做限制的。其檔案總管的檔案盒也只能容許你格式定義。
但「全部檔案」這個還是不會讓你移除掉的。

所以,前端的操作千萬不要想要做啥限制。畢竟所謂的前端,其運做是在其它人的電腦上。
而不是在你的主機上。你只能對你的主機做限制。不能給其它人的電腦做限制。

0
韩梦寒梦
iT邦新手 5 級 ‧ 2020-07-21 13:56:38

这个只是一个HTTP的约定, 并不是能通过这个限定。
还是得要通过你的程序去判断才行的

我要發表回答

立即登入回答