通过点击“另存为”
,最佳的代码编写方式将允许用户保存表格数据以下是方案
我创建了一个网页,列出了mysql数据库(在php中创建的应用程序)中的数据。
页面列出数据并提供“另存为”按钮,以便将数据保存到用户本地计算机(csv,xml等)。
技术
以下是执行此操作的最佳方式 1)从查询mysql db的同一个php程序中将数据保存到文件中? 2)当用户点击网页上的“另存为”时,ajax将数据从#1(服务器)流式传输到用户本地计算机
我已经阅读了一些关于如何创建xml数据(opendocument,openxml)和php excel / xml库的内容,但只是不完全理解流程;应该在查询时创建文件,数据如何到达用户本地计算机等。或者是否有不同的方法来执行此操作?
由于
答案 0 :(得分:1)
主要有两种方法:
在服务器上生成文件。当第一个用户点击下载链接或每次有人下载文件时,您可以在其他任何事情之前执行此操作。您可以通过提供由Web服务器或Web框架解释为文件的位置的下载链接来完成此操作,例如:
或者您为下载编写自定义操作/页面,例如:
http://example.org/download.php?filename=file1.csv(how to make a download link in PHP)
生成HTTP响应,客户端(浏览器)将其解释为下载。您不需要将额外的文件写入磁盘,但它对于文件类型最有用,您可以在程序中轻松生成,例如CSV文件的行等。以下是CSV文件的示例:http://code.stephenmorley.org/php/creating-downloadable-csv-files/
浏览器以任何方式知道它处理文件下载而不是只通过HTTP标题处理其他网页:
// specify the MIME-type
// (e.g. if it's an image or PDF most browser can display the content directly)
header('Content-Type: text/csv; charset=utf-8');
// The Content-Disposition response-header field has been proposed
// as a means for the origin server to suggest a default filename
// if the user requests that the content is saved to a file.
header('Content-Disposition: attachment; filename=data.csv');
您可以在此处详细了解:http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html
最后,这完全取决于您和您的要求。它是一个低流量站点,文件很小? - 预先生成文件,让Web服务器处理下载链接。它是一个拥有大量小文件的高流量网站吗? - 也许可以动态生成它(就像在CSV示例中一样)。不是每个人都应该能够下载每个文件,并且您的php项目管理身份验证? - 使用自定义的download.php脚本来检查权限会更容易。