简体   繁体   English

创建CSV并强制下载文件

[英]Create CSV and force download of file

I have this PHP code that selects data from a database and creates a CSV file. 我有这个PHP代码,它从数据库中选择数据并创建一个CSV文件。

Its working fine, but how can i force download of the CSV file once it has finished being created? 它的工作正常,但是一旦完成创建,我怎么能强制下载CSV文件?

I have added the headers at the top of the page but its not download the file 我已经在页面顶部添加了标题,但它没有下载文件

header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=calls.csv');

$filename = $SettingsCustomer["company"].'-CallsTariff'.'-'.date("YmdHis");

// create a file pointer connected to the output stream
$output = fopen($_SERVER["DOCUMENT_ROOT"].'/file_dump/price_tariffs/'.$filename.'.csv', 'w');

// output the column headings
fputcsv($output, array('Number', 'Description', 'Per Minute Cost'));

// loop over the rows, outputting them
$cost=0;
$sql="SELECT * from call_costs where sequence < '50' ";
$rs=mysql_query($sql,$conn);
while($result = mysql_fetch_array($rs)) {
    //check for custom costs
    $sql2="SELECT * from call_costs_custom where parent = '".$result["sequence"]."' AND customer_seq = '".$SettingsCustomer["sequence"]."' ";
    $rs2=mysql_query($sql2,$conn);
    if(mysql_num_rows($rs2) > 0) {
        $result2=mysql_fetch_array($rs);

        $cost = $result2["cost"];
    } else {
        $cost = $result["retail"];
    }

    fputcsv($output, array($result["number"], $result["description"], $cost));
}

Charlie, this is a sample way to create and force download to csv file. 查理,这是一个创建和强制下载到csv文件的示例方法。 Try to implement this in your code: 尝试在您的代码中实现这一点:

<?php

$filename = 'test';

$filepath = $_SERVER["DOCUMENT_ROOT"] . $filename.'.csv';
$output = fopen($filepath, 'w+');

fputcsv($output, array("Number", "Description", "test"));
fputcsv($output, array("100", "testDescription", "10"));

header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . $filename . '.csv"');
header('Content-Length: ' . filesize($filepath)); 
echo readfile($filepath);

Please search the next time better. 请在下次更好地搜索。 Thats everytime the same answer 多数民众赞成每次都有相同的答案

header('Content-Type: application/octet-stream');

text/csv is a display able content-type text / csv是一种可显示的内容类型

Well you need that at your end... 那么你需要那个...

$file = '/file_dump/price_tariffs/'.$filename.'.csv';
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
readfile($file);
exit;

You can remove the get_content_file 您可以删除get_content_file

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM