我必須先讀取csv文件客戶端的第幾行,以便在上傳大文件之前向用戶顯示預覽。讀取csv文件客戶端
我使用C#與ASP.Net(VS2010)
有誰知道如何可以做到這一點?此外,它適用於所有瀏覽器!?!
(這是不可能使用ActiveX或如此,我們不希望我們的客戶能夠安裝的東西!)
一個示例代碼將是巨大的!
在此先感謝!
我必須先讀取csv文件客戶端的第幾行,以便在上傳大文件之前向用戶顯示預覽。讀取csv文件客戶端
我使用C#與ASP.Net(VS2010)
有誰知道如何可以做到這一點?此外,它適用於所有瀏覽器!?!
(這是不可能使用ActiveX或如此,我們不希望我們的客戶能夠安裝的東西!)
一個示例代碼將是巨大的!
在此先感謝!
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
對象具有name
和type
屬性,您可以使用它來驗證它是否爲CSV文件,如果您想要更嚴格。
您無法使用vanilla JavaScript讀取本地文件。
對於那些使用IE的人來說,你可以使用activeX作爲漸進增強功能(儘管爲IE用戶提供增強的體驗違背了我所支持的一切!)。
如果您可以使用Flash,請查看Read local file in Flash。
好吧,但有另一種方法來讀取文件? – CyberK 2010-09-22 14:16:33
不,你不能使用javascript來讀取用戶機器上的文件。如果您需要跨瀏覽器的方式來執行此操作,您將不得不從Flash或Java等方面獲得幫助。
HTML5中有一個W3C proposal for a File API。我針對this test運行了幾個瀏覽器,發現Firefox 3.6和Chrome 6支持File Reader API
和Local Storage
。 Safari 5(在Windows上)支持Local Storage
,但是不支持File Reader API
。抱歉,我無法測試IE9,因爲公司政策已經確定了IE6(?!)。
謝謝...這是我正在尋找的答案:D – CyberK 2010-09-22 20:29:15
另一個問題,是否也可以加載一個csv的第一行5行而不加載完整的csv?如果是這樣,你能舉個例子嗎?謝謝 – CyberK 2010-09-23 07:42:41
@CyberK:我不認爲有辦法只讀取文件的一部分。你將不得不閱讀整個事情,找到第5行結束的地方,並使用'substring'來獲取開始。 – 2010-09-23 13:29:36