【问题标题】:Page not loading with forced csv download页面未加载强制 csv 下载
【发布时间】:2019-10-22 05:16:24
【问题描述】:

我有一个非常简单的页面。有一个按钮,按下时会强制下载 CSV。除了一件事之外,那部分工作正常。该文件将在页面加载时立即下载。

为了消除这一点,我添加了一个 isset 语句。除了现在,页面没有加载。页面上有非常老的错误绝对不应该显示。我什至创建了一个新文件并添加了代码。该页面甚至不会加载。文件只是下载,然后一切都停止了。

有人知道是什么原因造成的吗?

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

$file_name = "subscriber_list.csv";
$file = fopen("subscriber_list.csv","w");

try {
    $servername = 'localhost';
    $usernameCon = '';
    $passwordCon = '';
    $con = new PDO('mysql:host='.$servername.';dbname=', $usernameCon, $passwordCon);

    $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql_subscribers = "
        SELECT first_name, last_name, phone, email, new_mowers, used_mowers, date_subscribed
        FROM test_notif
        ORDER BY date_subscribed
    ";
    $subscriber_stmt = $con->prepare($sql_subscribers);
    $subscriber_stmt->execute();
    $subscriber_rows = $subscriber_stmt->fetchAll(PDO::FETCH_ASSOC);

    if (isset($_POST['submitbutton'])) {
        foreach ($subscriber_rows as $subscriber_row) {
            //fputcsv($file,explode(',',$subscriber_row));
            fputcsv($file, $subscriber_row);
        }
    }

    header('Content-type: application/octet-stream');
    header("Content-Disposition: attachment; filename='.$file_name.'");

    fclose($file);
    readfile($file_name);
    exit;
}
catch(PDOException $e) {
    echo "Connection failed: " . $e->getMessage();
}

?>
<body>
    <form action="" name="csvForm" method="POST">
        <input type="submit" value="Download File" name="submitbutton">
    </form>
</body>
</html>

【问题讨论】:

    标签: php file pdo fopen


    【解决方案1】:

    你可以试试

    <?php
    if (isset($_POST['submitbutton'])) {
        error_reporting(E_ALL);
        ini_set('display_errors', 1);
    
        $file_name = "subscriber_list.csv";
        $file = fopen("subscriber_list.csv","w");
        try {
            $servername = 'localhost';
            $usernameCon = '';
            $passwordCon = '';
            $con = new PDO('mysql:host='.$servername.';dbname=', $usernameCon, $passwordCon);
    
            $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            $sql_subscribers = " SELECT first_name, last_name, phone, email, new_mowers, used_mowers, date_subscribed
                  FROM test_notif
                  ORDER BY date_subscribed ";
            $subscriber_stmt = $con->prepare($sql_subscribers);
            $subscriber_stmt->execute();
            $subscriber_rows = $subscriber_stmt->fetchAll(PDO::FETCH_ASSOC);
    
            foreach ($subscriber_rows as $subscriber_row) {
                //fputcsv($file,explode(',',$subscriber_row));
                fputcsv($file, $subscriber_row);
            }
    
            header('Content-type: application/octet-stream');
            header("Content-Disposition: attachment; filename='.$file_name.'");
    
            fclose($file);
            readfile($file_name);
        }
         catch(PDOException $e) {
            echo "Connection failed: " . $e->getMessage();
        }
    }
    ?>
    <body>
        <form action="" name="csvForm" method="POST">
            <input type="submit" value="Download File" name="submitbutton">
        </form>
    </body>
    </html>
    

    【讨论】:

    • 想解释一下他们为什么要尝试这个?你有什么改变? 请解释一下你的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-16
    • 2011-03-25
    • 2013-06-20
    • 2012-09-28
    • 2013-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多