亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 file_put_contents php 創建 csv 文件的下載彈出窗口(標題)

如何使用 file_put_contents php 創建 csv 文件的下載彈出窗口(標題)

PHP
不負相思意 2023-06-24 17:44:55
我想知道是否有人可以給我一些關于如何創建下載彈出窗口以及用戶保存它的位置的指示。因此,當他們單擊我的“下載為 CSV”按鈕時,它會提示用戶在其目錄中選擇目標位置。目前,我可以讓下載的文件正常工作,但前提是我從命令行運行它。我不太確定如何用它來實現標題。主要問題是因為我無法使用 fopen()、fwrite() 和 fclose(),因為我只向 csv 文件添加一個(雖然很大)字符串。以下是一些僅在我本地運行該程序時才有效的代碼。  $output = print_r(cleanUpEntry($info), true);     file_put_contents("output.csv", $output);它將文件下載到與我的 PHP 文件相同的文件夾,但我需要它在網頁上工作,以便用戶可以下載該文件。注意* 我不能使用 fputcsv,因為它只適用于數組,而我的是一個多維數組,所以獲取 print_r 的輸出要容易得多。
查看完整描述

2 回答

?
Smart貓小萌

TA貢獻1911條經驗 獲得超7個贊

將 CSV 文件發送到瀏覽器


$output = ...

header('Content-Type: text/csv');

echo $output;

exit;

瀏覽器傾向于打開 CSV、PDF 等文件。要保存文件而不是打開文件,請添加 HTTP header Content-Disposition。對于較大幾個字節的文件,Content-Length也可以使用。


強制瀏覽器下載文件。


$output = ...

$filename = "output.csv";

header('Content-Type: text/csv');

header('Content-Disposition: attachment; filename="' . $filename . '"');

header("Content-Length: " . strlen($output));

echo $output;

exit;

發送靜態文件到瀏覽器


您的 Web 服務器(Apache、Nginx 等)應該處理靜態文件,但如果您出于安全或其他原因需要通過 PHP 運行它......


$file = './files/myfile.csv';

header('Content-Type: text/csv');

readfile($file);

exit;

強制瀏覽器下載靜態文件。


$file = './files/myfile.csv';

$filename = basename($file); // or specify directly, like 'output.csv'

header('Content-Type: text/csv');

header('Content-Disposition: attachment; filename="' . $filename . '"');

header("Content-Length: " . filesize($file));

readfile($file);

exit;


查看完整回答
反對 回復 2023-06-24
?
慕斯709654

TA貢獻1840條經驗 獲得超5個贊

這使用老派fopen, fputcsv, 和fclose, 而不是file_put_contents,但總是對我有用......


    function csv_from_array($fileName, $data, $header_included = FALSE){

        // Downloads file - no return

        header("Cache-Control: must-revalidate, post-check=0, pre-check=0");

        header('Content-Description: File Transfer');

        header("Content-type: text/csv");

        header("Content-Disposition: attachment; filename={$fileName}");

        header("Expires: 0");

        header("Pragma: public");

        $fh = @fopen( 'php://output', 'w' );

        foreach($data as $line) {

            // Add a header row if not included

            if (!$header_included) {

                // Use the keys as titles

                fputcsv($fh, array_keys($line));

            }

            fputcsv($fh, $line);

        }

        fclose($fh);

        exit;

    }

您是否因某種原因需要使用?file_put_contents


如果文件已經存在/不需要從 php 數組創建,您可以修改如下:


    function download_csv($fileName){

        // Downloads file - no return

        header("Cache-Control: must-revalidate, post-check=0, pre-check=0");

        header('Content-Description: File Transfer');

        header("Content-type: text/csv");

        header("Content-Disposition: attachment; filename={$fileName}");

        header("Expires: 0");

        header("Pragma: public");

        exit;

    }


查看完整回答
反對 回復 2023-06-24
  • 2 回答
  • 0 關注
  • 143 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號