生成CSV,下载到本地计算机并同时保存到服务器

Den*_*ans 9 php download

我有这个PHP脚本(见下文),它允许我使用SQL查询生成CSV文件并将其下载到我的本地机器但是如何将其保存到远程服务器(http://myserverblabla.com/uploads)同时在那边保留备份副本?是否可以修改我现有的脚本来实现这一目标?

include 'class/database.class.php';

header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"filename.csv\";" );
header("Content-Transfer-Encoding: binary");

$database = new Database();

try{
    // Select query
    $database->query("SOME SQL QUERY");
    $data = $database->resultset();

    $fp = fopen('php://temp', 'r+');
    foreach ($data as $row) {
        if (! isset($ch)) {
            foreach ($row as $header => $value) {
                if (isset($ch))
                    $ch .= ",";
                    else
                        $ch = "";

                        $ch .= '"' . addslashes($header) . '"';
            }
        }
        fputcsv($fp, $row, ",", '"');
    }

    rewind($fp);
    $csv = fread($fp, 1048576);
    fclose($fp);
    echo $ch . PHP_EOL .  rtrim($csv, PHP_EOL);
}
catch(PDOException $e){
    echo json_encode((object)['error'=>true,'message'=>$e->getMessage()]);
}
Run Code Online (Sandbox Code Playgroud)

小智 5

为什么不简单地复制你生成的文件?只需copy(your file $fp, destination dir/filename);在你的后面插入一些东西fclose($fp);


Den*_*ans 5

我已经弄明白了......

fopen为了将CSV文件保存到服务器,我更改了功能:

$fp = fopen('uploads/test.csv', 'w+');