我是一个新手程序员,我搜索了很多有关我的问题的内容,但是找不到关于此的有用的解决方案或教程。
我的目标是我有一个PHP数组,并且数组元素显示在页面上的列表中。
我想添加一个选项,以便用户如果需要,他/她可以创建带有数组元素的CSV文件并下载。
我不知道该怎么做。我也搜索了很多。但尚未找到任何有用的资源。
请为我提供一些教程或解决方案或建议以自己实施。由于我是新手,请提供易于实施的解决方案。
我的数组看起来像:
Array
(
[0] => Array
(
[fs_id] => 4c524d8abfc6ef3b201f489c
[name] => restaurant
[lat] => 40.702692
[lng] => -74.012869
[address] => new york
[postalCode] =>
[city] => NEW YORK
[state] => ny
[business_type] => BBQ Joint
[url] =>
)
)
您可以为数组使用内置的fputcsv()从数组中生成正确的csv行,因此您必须循环并收集行。喜欢:
$f = fopen("tmp.csv", "w");
foreach ($array as $line) {
fputcsv($f, $line)
}
为了使浏览器提供“另存为”对话框,您必须像这样发送HTTP标头:
header('Content-Disposition: attachment; filename="filename.csv";');
放在一起:
function array_to_csv_download($array, $filename = "export.csv", $delimiter=";") {
// open raw memory as file so no temp files needed, you might run out of memory though
$f = fopen('php://memory', 'w');
// loop over the input array
foreach ($array as $line) {
// generate csv lines from the inner arrays
fputcsv($f, $line, $delimiter);
}
// reset the file pointer to the start of the file
fseek($f, 0);
// tell the browser it's going to be a csv file
header('Content-Type: application/csv');
// tell the browser we want to save it instead of displaying it
header('Content-Disposition: attachment; filename="'.$filename.'";');
// make php send the generated csv lines to the browser
fpassthru($f);
}
您可以像这样使用它:
array_to_csv_download(array(
array(1,2,3,4), // this array is going to be the first row
array(1,2,3,4)), // this array is going to be the second row
"numbers.csv"
);
更新:
除了,php://memory
您还可以将php://output
用作文件描述符,并取消查找等:
function array_to_csv_download($array, $filename = "export.csv", $delimiter=";") {
header('Content-Type: application/csv');
header('Content-Disposition: attachment; filename="'.$filename.'";');
// open the "output" stream
// see http://www.php.net/manual/en/wrappers.php.php#refsect2-wrappers.php-unknown-unknown-unknown-descriptioq
$f = fopen('php://output', 'w');
foreach ($array as $line) {
fputcsv($f, $line, $delimiter);
}
}
问题内容: 我试图允许用户下载包含其操作定义的数据的CSV文件。该文件不存在,它是动态创建的。如何在Flask中做到这一点? 问题答案: 使用生成数据并传输响应。使用写入内存缓冲区,而不是生成中间文件。 如果该generate函数需要从current中获取信息request,则应使用修饰stream_with_context,否则您将收到“在外部请求上下文中工作”错误。其他所有内容保持不变。
问题内容: 使用PHP,我试图提供由于授权问题而不在网络可访问目录中的大文件(最大可能为200MB)。当前,我使用一个调用以及一些标头来提供文件,但是似乎PHP在发送之前先将其加载到内存中。我打算在共享托管服务器上进行部署,这将不允许我使用太多内存或添加自己的Apache模块(例如X- Sendfile)。 出于安全原因,我不能让我的文件位于可通过网络访问的目录中。有人知道我可以在共享主机服务器上
本文向大家介绍如何通过PHP脚本下载大文件?,包括了如何通过PHP脚本下载大文件?的使用技巧和注意事项,需要的朋友参考一下 要通过PHP脚本下载大文件,代码如下- 示例 输出结果 这将产生以下输出- 函数“ readfile_chunked”(用户定义)具有两个参数:文件名和返回字节数的默认值“ true”,表示已成功下载大文件。声明了变量“ chunksize”,其中每个块需要读取的字节数。将'
我试图允许用户下载一个CSV文件,其中包含由其操作定义的数据。该文件不存在,它是动态创建的。我怎么能在烧瓶里做这个?
问题内容: 有人可以提供使用fgetcsv从CSV文件创建数组的代码吗? 我使用以下代码从一个简单的CSV文件创建一个数组,但是当我的一个字段包含多个逗号(例如地址)时,该方法将无法正常工作。 *此外,我的托管服务不支持str_getcsv。 上面的代码不适用于以下CSV文件示例。第一栏是姓名,第二栏是地址,第三栏是婚姻状况。 问题答案: 就像您在标题中所说的那样,fgetcsv是必经之路。它很容
问题内容: 我想创建一个csv文件,但是当我运行代码时,它返回一个空白页,没有csv文件。我使用PHP5。我使用以下代码: 谢谢! 问题答案: 其空白,因为您正在写信。您应该写到using 代替,还应该发送标头信息以表明它是csv。 例