【问题标题】:What is the best strategy for web application to create temporary .csv files?Web 应用程序创建临时 .csv 文件的最佳策略是什么?
【发布时间】:2015-01-23 12:48:36
【问题描述】:

我的应用程序会临时创建 .csv 文件来存储一些数据行。管理这种临时文件创建并在用户退出应用程序后删除它们的最佳策略是什么? 我认为在服务器上创建临时 .csv 文件不是一个好主意。 有没有简单的方法来管理客户端机器(浏览器)上的临时文件创建?

这些 .csv 文件包含表格记录 -> 稍后将用作 d3.js 可视化图表/元素的源。

请分享您对此场景的实时应用程序的经验?

我正在使用 DJango 框架 (Python) 来执行此操作。

【问题讨论】:

    标签: python django web-applications server temporary-files


    【解决方案1】:

    为什么要创建磁盘文件?对于较小的文件,请使用内存中的文件对象,例如 StringIO

    如果您的 CSV 文件可能会变大,请使用 tempfile.SpooledTemporaryFile() object;如果您向它们写入足够的数据,它们会动态地将数据交换到磁盘文件中。关闭后,文件会自动从磁盘中清除。

    【讨论】:

    • 嗨 Martijn,感谢您的建议!我正在处理 tempfile.SpooledTemporaryFile()。看起来这正是我想要的。但问题是我无法在 d3.js 脚本中引用它:(。Python 是底层代码,但我需要在我的 html 的 javascript 代码中引用文件对象。
    • @user3128771:您也不能在 d3.js 脚本中引用远程 HTTP 服务器上的文件。构建数据后,您仍然需要将结果发送给客户端。
    • @user3128771: d3.js 为 CSV 文件获取 URL;您的视图会生成 CSV 响应(根本不必是物理文件)。
    • 我不能使用 StringIO 或任何字符串对象来存储从表中获取的行。原因是,我必须进行大量转换才能获得所需的格式。如果它是具有某些扩展名的任何临时文件,我可以以任何字符分隔的方式存储记录,以后可以直接使用它而无需执行更改。否则,我最终会对获取的记录进行大量更改。 - (行到数组 - JSON - 在 Javascript 中由于某种原因在 python 中转换为 Json 的数组......)
    • @user3128771:那么我将不得不在这里放弃,因为听起来你有一大堆问题要解决。这对于 cmets 或一个 Stack Overflow 问题来说太宽泛了。
    【解决方案2】:

    如果您的偏好是存储数据客户端,"HTML local storage" 可能是您的选择。这使您可以将字符串数据存储在用户浏览器中的键值对中,并遵守相同的来源策略(因此一个来源(域)的数据仅对该来源可见)。数据大小也有 5MB 的限制,必须是字符串 - CSV 可以。

    如果您的可视化页面/代码来自同一个域,则本地存储中的数据将可供其访问。

    【讨论】:

    • 非常感谢 Mhawke!我现在会通过它。
    猜你喜欢
    • 1970-01-01
    • 2011-08-24
    • 1970-01-01
    • 2021-07-25
    • 2012-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-01
    相关资源
    最近更新 更多