0

基本上,我只想通过 Javascript 或 jQuery 上传 CSV 文件。

我想尝试在不涉及任何 PHP 的情况下执行此操作。

我需要使用 HTML 上传表单,然后仅将其内容保存到多维数组或字符串中。

我不需要将上传的文件保存到服务器,我只需要将其内容保存到所述的字符串中。

我在网上看了很多,但一切都涉及 PHP。

这可能只使用 Javascript 或 jQuery 吗?

提前致谢

4

4 回答 4

2

这使用了我在 GPLv3 许可下编写和发布的库: html5csv

下面的示例将 CSV 文件上传到浏览器中,该文件可作为数组数组使用。

该库支持各种块操作,例如制作表格、编辑、绘图、拟合、调用函数、保存在浏览器会话存储或本地存储中。

JSFIDDLE

html

Choose a CSV file to load into the application:   
<input id='foo' type='file'>
<hr />

js(需要 jQuery 和 html5csv.js)

CSV.begin('#foo').
      table('output', {header:1, caption:'Uploaded CSV Data'}).
      go();

在这里,go()可以接受一个函数callback (e,D),其中 e 将包含一个错误字符串或 null,而 D 是一个可能包含D.rows[0][0],...,D.rows[n-1][m-1]数据n x m矩阵的对象。第 0 行可能是标题行。

使用了异步性,实际上是在某些地方强制执行的。因此请注意,与 AJAX 一样,此代码将立即返回到下一行,并且最好将其阅读为设置工作流,以便在上一步准备好时执行该操作。

保存/恢复

您可以在工作流中的某个位置将数据保存到用户的浏览器 localStorage 对象.save('local/someKey').中,此时存在于数组中的数据将存储在 HTML5 本地存储中(如果包含文档中的 LZString 库,甚至可能会被压缩),直到浏览器用户删除它。

然后在同一页面或同一网站上的另一个页面中,您可以使用CSV.begin('local/someKey')...

使用数据

您应该将要使用数据的任何代码放入一个函数中,该函数可以适合 html5csv 预期的回调callgohtml5csv 站点上记录的回调。

于 2013-08-24T04:09:01.413 回答
1

jQuery CSV 插件可以使用客户端文件处理(不需要像 PHP 这样的服务器端脚本):

https://code.google.com/p/jquery-csv/#Client-Side_File_Handling

于 2013-08-24T03:50:01.917 回答
1

您可以使用允许您将 CSV 解析为数组的插件。

http://code.google.com/p/jquery-csv/

特征

  • 将 CSV 字符串转换为数组
  • 将多行 CSV 字符串转换为二维数组
  • 将多行 CSV 字符串转换为对象数组(即标题:值对)
  • 将值数组转换为 CSV(开发中)
  • 将对象数组转换为 CSV(开发中)
  • 扩展默认解析过程的钩子/回调
  • 可自定义的分隔符(默认:")和分隔符(默认:,)字符
  • Node.js 支持(即 CommonJS 导入和异步回调支持)
于 2013-08-24T03:50:28.160 回答
1

要进行上传,您需要能够从光盘读取文件。您可以使用HTMl5 File API做到这一点。我确信有 jQuery 库可以简化这一点,但这是底层技术。

其他人发布了一个关于如何使用 jQuery 做到这一点的问题(和解决方案):html5's file api example with jquery?

在浏览器中访问文件后,请使用CSV 库来处理它。

于 2013-08-24T03:51:32.313 回答