我想檢查上傳文件的類型。如果名稱像example.txt
,我只想得到.txt
部分。我怎樣才能實現它使用JQuery或JavaScript。如何使用jQuery或JavaScript獲取文件的擴展名?
任何建議或鏈接將欣賞!
我想檢查上傳文件的類型。如果名稱像example.txt
,我只想得到.txt
部分。我怎樣才能實現它使用JQuery或JavaScript。如何使用jQuery或JavaScript獲取文件的擴展名?
任何建議或鏈接將欣賞!
一個簡單的解決方案是.split()
和.pop()
拿到最後一個字符串數組中,像這樣:
var ext = fileName.split('.').pop();
這將讓您剛纔"txt"
沒有.
,只是追加如果需要的話。這也適用於說:My.File.name.has.an extension.txt
以及。如果它沒有有擴展名,它會返回文件名,所以你可能想要檢查這個...或者去一個完全不同的方向,並通過正則表達式來對照一組或已知的擴展來驗證。
這就是我要找的感謝!!! – 2017-06-07 07:45:47
當具有查詢字符串參數時,腳本將無法正常工作,例如'/example/image.jpg?a = b&b = 2',爲了處理它,我增加了一個分割'file.split(「?」)[0] .split('。')。pop()'(注意:很多時候系統使用查詢字符串來防止在需要時緩存) – 2017-11-20 10:28:53
var text = 'example.txt',
ext = text.split('.')[1];
您可能希望至少使該語法有效。 *編輯*:你走了。 – 2010-11-12 13:10:37
哈哈對不起,快速鍵盤上 – tbleckert 2010-11-12 13:12:51
用整個文件名拆分。作爲分隔符。分割將分割的項目存儲在數組中。獲取數組的最後一個元素。
function getFileExtension(name)
{
int found = name.lastIndexOf('.') + 1;
return (found > 0 ? name.substr(found) : "");
}
注意,此實現返回一個空字符串,如果文件名不包含任何句點字符(即沒有擴展名)。在這種情況下,基於split()的實現有時會返回完整的文件名。
if((document.form1.upload.value.lastIndexOf(".jpg")==-1) {
alert("Please upload only .jpg extention file");
return false;
}
lastIndexOf將返回最後一次出現的指定搜索參數的索引。如果沒有找到,-1將返回
如果您需要驗證多個擴展名:
var filename = "picture.jpg";
var valid_extensions = /(\.jpg|\.jpeg|\.gif)$/i;
if(valid_extensions.test(filename))
{
alert('OK');
}
else
{
alert('Invalid File');
}
這樣就不再需要,如果你想查詢的擴展名,例如,上傳文件之前解析字符串。
'foojpg'會匹配。您的正則表達式中的時間段需要被轉義。 – 2010-11-12 14:53:36
-1:解決評論並修復答案。 – ANeves 2011-12-14 19:51:21
Frédéric的回答對我很好,但是,該功能在Chrome控制檯中出現「意外標識符」錯誤。 「int」是問題,並且此修改工作。
function getFileExtension(name){
var found = name.lastIndexOf('.') + 1;
return (parseInt(found) > 0 ? name.substr(found) : "");
}
文件的* name *可能會告訴你**沒有任何**關於它實際包含的內容。 – Pointy 2010-11-12 13:10:54
看看這個http://stackoverflow.com/questions/1818310/regular-expression-to-remove-a-files-extension – ArK 2010-11-12 13:13:05
@Pointy:它是什麼?我無法理解。你在說安全威脅嗎? – 2010-11-12 15:51:01