2013-07-09 33 views
-1

我在我的web應用程序中使用自定義文件上傳按鈕。我希望用戶看到他們選擇了一個文件,因此我更改了div的html以顯示文件名。使用JQuery來獲取文件名

這裏是我的jQuery:

$("input[type=file]").change(function() { 
    var filename = $("input[type=file]").val(); 
    $("#share-file-name p").html(filename); 
}); 

現在,這一偉大工程,除了一個事實,即輸入的值是:

C:\fakepath\photo.jpg 

所以這是用戶看到的內容。我只是想讓他們看到「photo.jpg」部分。我如何使用我的jquery去除除文件名外的所有內容?

謝謝!

+0

使用正則表達式 –

+0

使用字符串操作,而不是jQuery。 –

+0

http://www.doxdesk.com/img/updates/20091116-so-large.gif – NicoSantangelo

回答

0

使用split("/");,然後你得到了與/所以最後一個元素是文件名

var file = filepath.split("/"); file[file.length - 1] 
1

你可以只砍下什麼的最右邊左邊的「/」

分開的所有元素的數組

像這樣:

$("input[type=file]").change(function() { 
    var filename = $("input[type=file]").val(); 
    // As pointed out in the comments, this line is required to make it 
    // Windows compliant. It's important to handle paths from any OS. 
    filename = filename.replace(/^.*[\\\/]/, ''); 
    $("#share-file-name p").html(filename); 
}); 
+0

在Windows上無法正常工作,但嘿它只是市場的90%... – dandavis

+0

@dandavis哪個瀏覽器測試過它沒有工作?這是標準的JavaScript,它應該適用於所有主流瀏覽器。 – SamHuckaby

+0

它不是JS,它是打破的向後路徑符號... – dandavis

2

這應該工作:

filename = filename.replace(/^.*[\/\\]/, ""); 
1

如果您有存儲在一個變量filename完整的文件路徑,你可以做以下只得到文件名:

filename.substring(filename.lastIndexOf("\")) 

正則表達式或拆分命令是矯枉過正你想要什麼去做。

0

您可以使用正則表達式:

filnameToDisplay = /([^\\]+.\w+$)/.exec(filename)[0]; 

這將讓你想無論在文件名中的文件路徑或字符長度的內容,除非他們使用的是奇怪的擴展,我不知道!