我必须先读取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