2013-01-31 36 views

回答

2

給定文件輸入:

var extension = $('#file_input').val().split('.').pop(); 
if (['bmp', 'gif', 'png', 'jpg', 'jpeg'].indexOf(extension) > -1) { 
    console.log('validated'); 
} else { 
    console.log('invalid extension'); 
} 

對於更廣泛的文件類型過濾,您應使用服務器端驗證。

+0

變量擴展不會包含文件的擴展名,如果文件名中包含點。 –

+0

@DanielLi,謝謝。但是EdourdLopez指的是什麼? – CodingWonders90

+0

我正在使用split('。')[1]'而不是split('。')。pop()'。基本上,如果你有一個像'my.example.jpg'這樣的文件名,擴展就是例子。這已經被修復了。 –

1

爲了安全起見,你應該不使用JavaScript測試有效的文件類型。 Javascript只是客戶端,因此您的腳本可能很容易被忽略,或者用戶可以用一個單獨的擴展名重命名它們的文件,並且您的檢查點會失敗。

查找到MIME types和用戶上傳文件的服務器端驗證。這是一個複雜的主題,由您來決定您想花多少時間。安全性隨着更徹底的檢查而增加

我使用的檢查是文件大小,MIME類型,並上傳位置(以確保沒有人試圖從遠程站點上傳腳本)。在PHP中這些功能是filesizefileinfomime_content_typeis_uploaded_file。其他語言也有類似的功能。

你可以再進一步,測試文件的位,以確保它不是惡意代碼或假裝通過欺騙MIME頭,例如是一個JPEG文件。

+1

+ 1,我同意你的看法,但也可以進行客戶端驗證,主要是爲了避免不必要的服務器調用。 – gustavodidomenico

+0

JavaScript可以是Node.js的服務器端 –

相關問題