2010-09-22 47 views
2

我必須先讀取csv文件客戶端的第幾行,以便在上傳大文件之前向用戶顯示預覽。讀取csv文件客戶端

我使用C#與ASP.Net(VS2010)

有誰知道如何可以做到這一點?此外,它適用於所有瀏覽器!?!

(這是不可能使用ActiveX或如此,我們不希望我們的客戶能夠安裝的東西!)

一個示例代碼將是巨大的!

在此先感謝!

回答

3

Firefox 3.6+和Chrome(至少版本6,可能是舊版本)支持File API,它允許您從文件輸入中讀取本地文件。

下面是一個簡單示例:

function handleFile(file) { 
    var reader = new FileReader(); 
    reader.onload = function(e) { 
     // Here's where you would parse the first few lines of the CSV file 
     console.log(e.target.result); 
    }; 
    reader.readAsText(file); 
} 
在你的HTML

,你有這樣的事情:

<input type="file" onchange="handleFile(this.files[0])" /> 

當然,在現實生活中你應該讓優雅降級。

file對象具有nametype屬性,您可以使用它來驗證它是否爲CSV文件,如果您想要更嚴格。

+0

謝謝...這是我正在尋找的答案:D – CyberK 2010-09-22 20:29:15

+1

另一個問題,是否也可以加載一個csv的第一行5行而不加載完整的csv?如果是這樣,你能舉個例子嗎?謝謝 – CyberK 2010-09-23 07:42:41

+0

@Cyber​​K:我不認爲有辦法只讀取文件的一部分。你將不得不閱讀整個事情,找到第5行結束的地方,並使用'substring'來獲取開始。 – 2010-09-23 13:29:36

1

您無法使用vanilla JavaScript讀取本地文件。

對於那些使用IE的人來說,你可以使用activeX作爲漸進增強功能(儘管爲IE用戶提供增強的體驗違背了我所支持的一切!)。

如果您可以使用Flash,請查看Read local file in Flash

+0

好吧,但有另一種方法來讀取文件? – CyberK 2010-09-22 14:16:33

1

不,你不能使用javascript來讀取用戶機器上的文件。如果您需要跨瀏覽器的方式來執行此操作,您將不得不從Flash或Java等方面獲得幫助。

1

HTML5中有一個W3C proposal for a File API。我針對this test運行了幾個瀏覽器,發現Firefox 3.6和Chrome 6支持File Reader APILocal Storage。 Safari 5(在Windows上)支持Local Storage,但是不支持File Reader API。抱歉,我無法測試IE9,因爲公司政策已經確定了IE6(?!)。