Загрузите файл CSV на внешний сервер

Приведенный ниже код работает на моей тестовой машине localhost, но мне нужно знать, как заставить его работать на внешнем сервере. Мне нужно иметь возможность скачать файл.csv. Можно ли предложить пользователю загрузить файл или выбрать местоположение на сервере?

<?php
    session_start();
    require ("../login.php");

    $success = false;

    include ("header.php");
    include ("adminnav.php");
?>

    <h2>Download Previews Totals</h2>

<?php



    $stmt = $db->prepare
    ("SELECT s.short_name, p.name, t.title, SUM(sub.quantity) AS quantity
    FROM store s
    JOIN users u
        ON s.short_name = u.store
    JOIN subscriptions sub
        ON u.id = sub.user
    JOIN titles t
        ON sub.title = t.id
    JOIN publishers p
        ON t.publisher = p.name
    GROUP BY s.short_name, p.name, t.title
    ORDER BY s.short_name, p.name, t.title");

    if ($stmt->execute()) {
        $rows = $stmt->fetchAll();

        // Pick a filename and destination directory for the file
        // Remember that the folder where you want to write the file has to be writable
        $filename = "C:/Previews_Files/previews".time().".csv";

        // Actually create the file
        // The w+ parameter will wipe out and overwrite any existing file with the same name
        $handle = fopen($filename, 'w+');
        if (!$handle)
            $errors[] = '<p>File failed to open';
        else {
            // Write the spreadsheet column titles / labels
            fputcsv($handle, array('Store','Publisher', 'Title', 'Quantity'));

            // Write all the user records to the spreadsheet
            foreach($rows as $row)
            {
                fputcsv($handle, array($row['short_name'], $row['name'], $row['title'], $row['quantity']));
            }

            // Finish writing the file
            fclose($handle);
            $success = true;
        }
    }
    else
        $errors[] = '<p>There are no previews totals to display.</p>';

    if ($success == true)
        echo '<p>Your file has successfully been downloaded to \'C:/Previews_Files\'</p>';
    else
        $errors[] = '<p>Your file could not be downloaded. Please make sure the directory \'C:/Previews_Files\' has been created and is writeable.';

        if (!empty($errors))
            foreach($errors as $error)
                echo $error;
?>


<?php   
    include ("footer.php");
?>

1 ответ

Вы можете использовать CURL для получения данных из Интернета. CURL может сделать много вещей.

http://www.php.net/manual/en/intro.curl.php

Однако вам нужно будет установить его на свой сервер /VPS. Вы не можете сделать это на виртуальном хостинге. Поскольку CURL не установлен по умолчанию.

Другие вопросы по тегам