【问题标题】:How to save a files contents in Javascript/jQuery如何在 Javascript/jQuery 中保存文件内容
【发布时间】:2013-08-24 03:44:48
【问题描述】:

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

我想在不涉及任何 PHP 的情况下尝试这样做。

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

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

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

这可能只使用 Javascript 或 jQuery 吗?

提前致谢

【问题讨论】:

    标签: javascript jquery csv


    【解决方案1】:

    这使用了我在 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 一样,此代码将立即返回到下一行,最好将其解读为设置工作流,了解上一步准备就绪时要执行的操作。

    保存/恢复

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

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

    使用数据

    您应该将要使用数据的任何代码放入一个函数中,该函数可以满足 html5csv 的 callgo 预期的回调,如 html5csv 网站上所述。

    【讨论】:

    • 这正是我想要的。非常感谢您的帮助!
    • 好。只要意识到这仍然是早期代码(截至 2013 年 8 月)。我已经为它编写了一些单元测试,但总会有新的错误或未涵盖的新用途。
    • 那么数组保存在哪里呢?以后如何访问这个数组?
    • 您可以使用.save('local/someKey').go(); 保存它,它将在 HTML5 本地存储中(可能是压缩的),直到浏览器用户将其删除。然后在同一个网站的另一个页面中,可以使用.begin('local/someKey')... 将其取出
    • 对不起伙计,我还是很困惑哈哈。我只需要将 CSV 保存为数组,或者更好地保存为字符串。我将如何使用您的脚本来做到这一点?我真的不需要向用户显示它的内容。
    【解决方案2】:

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

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

    【讨论】:

    • 是的,我在网上搜索时遇到了这个问题。虽然,它没有关于如何使用 HTML 卸载表单进行操作的示例。所以我不确定该怎么做......
    【解决方案3】:

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

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

    特点

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

    【讨论】:

      【解决方案4】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-05-25
        • 1970-01-01
        • 2012-01-06
        • 2020-07-10
        • 2016-11-24
        • 1970-01-01
        • 2015-02-05
        相关资源
        最近更新 更多