Я хочу, чтобы файл загружался при посещении пользователем веб-страницы с PHP. Я думаю, это как-то связано file_get_contents
, но не знаю, как это сделать.
$url = "http://example.com/go.exe";
После загрузки файла с header(location)
него не происходит перенаправление на другую страницу. Это просто останавливается.
Ответы:
Прочтите документацию о встроенной функции PHP readfile
Также убедитесь, что добавлен правильный тип содержимого на основе вашего файла application / zip, application / pdf и т. Д. - но только если вы не хотите запускать диалог сохранения как.
источник
Или, если файл не открывается в браузере, вы можете просто использовать
Location
заголовок:источник
$file
(которое содержит часть http), а должно быть допустимым именем файла.правильно
или лучше для файлов типа exe
источник
Сначала отобразите свой файл и установите его значение в url.
index.php
download.php
источник
Если вам необходимо загрузить файл с размером, превышающим допустимый предел памяти (
memory_limit
настройка ini), что может вызватьPHP Fatal error: Allowed memory size of 5242880 bytes exhausted
ошибку, вы можете сделать это:источник
ob_flush()
может быть ошибка: ob_flush (): не удалось очистить буфер. Нет буфера для промывки . оберните его с помощьюif (ob_get_level() > 0) {ob_flush();}
(Ссылка stackoverflow.com/a/9182133/128761 )Модификация принятого ответа выше, которая также определяет тип MIME во время выполнения:
источник
Следующий код - это правильный способ реализации службы загрузки на php, как описано в следующем руководстве.
источник
file_name
иfilePath
. Не очень хорошая практика кодирования. Тем более без объяснения причин. Ссылки на внешнее руководство бесполезны.попробуй это:
источник
http://php.net/manual/en/function.readfile.php
Это все, что вам нужно. "Monkey.gif" измените имя вашего файла. Если вам нужно загрузить с другого сервера, "monkey.gif" измените на " http://www.exsample.com/go.exe "
источник
Вы также можете выполнять потоковую загрузку, которая потребляет значительно меньше ресурсов. пример:
В приведенном выше примере я загружаю test.zip (который на самом деле был zip-архивом студии Android на моем локальном компьютере). php: // output - это поток только для записи (обычно используется echo или print). после этого вам просто нужно установить требуемые заголовки и вызвать stream_copy_to_stream (источник, место назначения). Метод stream_copy_to_stream () действует как канал, который принимает входные данные из исходного потока (поток чтения) и направляет его в целевой поток (поток записи), а также позволяет избежать проблемы исчерпания разрешенной памяти, поэтому вы можете фактически загружать файлы большего размера чем ваш PHP
memory_limit
.источник
Ответы выше меня работают. Но я хотел бы предложить метод того, как выполнить это с помощью GET.
на вашей странице html / php
и
download.php
содержитэто должно работать с любыми типами файлов. это не тестируется с помощью POST, но может работать.
источник