Я хочу написать текстовый файл на сервере через Php и попросить клиента загрузить этот файл.
Как мне это сделать?
По сути, клиент должен иметь возможность загружать файл с сервера.
Я хочу написать текстовый файл на сервере через Php и попросить клиента загрузить этот файл.
Как мне это сделать?
По сути, клиент должен иметь возможность загружать файл с сервера.
В дополнение к уже опубликованным данным есть заголовок, который вы, возможно, захотите попробовать.
Единственное его предложение о том, как оно должно быть обработано, и пользовательский агент может игнорировать его и просто отображать файл в окне, если он знает, как:
<?php
header('Content-Type: text/plain'); # its a text file
header('Content-Disposition: attachment'); # hit to trigger external mechanisms instead of inbuilt
Подробнее о заголовке Content-Disposition см. Rfc2183.
Это лучший способ сделать это, если вы не хотите, чтобы пользователь видел реальный URL-адрес файла.
<?php
$filename="download.txt";
header("Content-disposition: attachment;filename=$filename");
readfile($filename);
?>
Кроме того, вы можете защитить свои файлы с помощью mod_access.
PHP имеет ряд очень упрощенных C-подобных функций для записи в файлы. Вот простой пример:
<?php
// first parameter is the filename
//second parameter is the modifier: r=read, w=write, a=append
$handle = fopen("logs/thisFile.txt", "w");
$myContent = "This is my awesome string!";
// actually write the file contents
fwrite($handle, $myContent);
// close the file pointer
fclose($handle);
?>
Это очень простой пример, но здесь вы можете найти больше ссылок на этот вид операции:
Просто отправьте ссылку на сайт http://example.com/textfile.php
И в этом PHP файле вы поместите следующий код:
<?php
header('Content-Type: text/plain');
print "The output text";
?>
Таким образом вы можете создать динамический контент (из базы данных)... Попробуйте Google отменить "Content-Type", если это не тот, который вы ищете.
Если вы установите тип контента для приложения/октета-потока, браузер ВСЕГДА будет предлагать файл в качестве загрузки и никогда не будет пытаться отображать его внутри, независимо от того, какой тип файла он имеет.
<?php
filename="download.txt";
header("Content-type: application/octet-stream");
header("Content-disposition: attachment;filename=$filename");
// output file content here
?>