2010-09-22 48 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(?!)。