将.csv文件保存到桌面

时间:2012-09-08 18:43:52

标签: php csv desktop fputcsv

我正在使用PHP开发脚本 将文件以.csv文件的形式保存到桌面。

我在PHP手册中找到了这个代码示例。

<?php
$list = array (
array('aaa', 'bbb', 'ccc', 'dddd'),
array('123', '456', '789'),
array('"aaa"', '"bbb"')
);
$fp = fopen('file.csv', 'w');
foreach ($list as $fields) {
fputcsv($fp, $fields);
}
fclose($fp);
?>  

我在桌面上创建了file.csv。 我的问题是我找不到正确的道路 在桌面上打开文件, 写并保存。 ($ fp = fopen('file.csv','w'))

我是否必须显示服务器的路径 我存储我的网站和 从那里到桌面的file.csv?

有人可以指导我吗?

非常感谢。

4 个答案:

答案 0 :(得分:3)

<?php
$list = array (
    array('aaa', 'bbb', 'ccc', 'dddd'),
    array('123', '456', '789'),
    array('"aaa"', '"bbb"')
);
header('Content-type: text/csv');
header("Content-Disposition: attachment;filename=file.csv");

// stream
$f  =   fopen('php://output', 'a');
foreach ($list as $fields) {
    fputcsv($f, $fields);
}

答案 1 :(得分:1)

如果您谈论客户端的桌面,则无法使用此方式。

无论如何,为什么不给你的客户一个下载文件的方法呢?

更新:从Amado Martinez的回答中做了一个小小的改进

<?php
    $list = array (
        array('aaa', 'bbb', 'ccc', 'dddd'),
        array('123', '456', '789'),
        array('"aaa"', '"bbb"')
    );

    header("Pragma: public");
    header("Expires: 0");
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header('Content-type: text/csv');
    header("Content-Disposition: attachment;filename=file.csv");
    header("Content-Transfer-Encoding: binary");

    $fp = fopen('php://output', 'a');
    foreach ($list as $fields) {
        fputcsv($fp, $fields);
    }
    fclose($fp);

?>

答案 2 :(得分:0)

您无法保存到桌面! 您的浏览器在沙箱中运行,沙盒是一个防止访问文件系统的清理环境。

答案 3 :(得分:0)

您的脚本在服务器上运行。您的文件位于桌面上。即使你有本地服务器(如xamp,uniformserver等),这些(也应该)也与你的整个主机文件系统分开。所以答案是 - 除非你从主机上的命令行运行php脚本,否则你无法达到。