Конечная цель - загрузить файл .csv. Сейчас я просто пытаюсь загрузить простой текстовый файл: test.txt. Единственное, что есть в этом файле - это слово «тест».
Вот HTML-код для files_to_download.php
Test file: <a href='test.php?file=test.txt'>Test.txt</a>
Код для test.php:
if(!(empty($_GET["file"])))
{
$file_name = $_GET["file"];
$path = "path/to/file";
$fullPath = $path . $file_name;
if(ini_get('zlib.output_compression'))
ini_set('zlib.output_compression', 'Off');
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: inline; attachment; filename=\"$file_name\"");
header("Content-Type: text/plain");
header("Content-Transfer-Encoding: binary");
readfile($fullPath);
}
Я пробовал варианты заголовков выше, добавляя больше и удаляя другие. Вышеуказанное является наиболее распространенной рекомендацией на этом сайте.
Я также пытался изменить
header("Content-Type: text/plain");
до
header("Content-Type: text/csv");
и получите те же результаты: пустой файл .txt или .csv.
Файлы не пустые, когда я открываю их напрямую (браузер файлов) с сервера. Я проверил права доступа к файлам, и они оба 644, так что весь мир может хотя бы прочитать файлы. Каталог 777.
Есть ли на сервере Apache конфигурация, которую мне нужно указать, которая может отсутствовать или я что-то упустил выше?
Спасибо за внимание!