Дополнительно
Загрузка файла на сервер с URL
Этот способ кажется довольно простым, и так оно и есть. Чтобы загрузить файл на ваш сервер, вам нужно сделать следующее:
file_put_contents("Tmpfile.zip", file_get_contents("http://someurl/file.zip"));
Но есть одна проблема. Что если у вас большой файл, например 100мб. Тогда у вас закончится память, и вы не сможете загрузить файл.
Мне нужен способ записи файла на диск в процессе загрузки. Таким образом, я смогу загружать большие файлы, не сталкиваясь с проблемами памяти.
321
10
Начиная с PHP 5.1.0,
file_put_contents()
поддерживает запись по частям, передавая в качестве параметра$data
ручку потока:Из руководства:
(Спасибо Hakre).
Попробуйте использовать cURL
Я не уверен, но думаю, что с опцией
CURLOPT_FILE
он пишет по мере получения данных, т.е. без буферизации.Выше есть пример (цитируется по prodigitalson) из wchih код не работает (причина: отсутствует fopen в CURLOPT_FILE - http://www.webdeveloper.com/forum/showthread.php?268299-RESOLVED-PHP-script-for-a-cronjob-download-file-unpzck-run-another-php-script ). Я не могу добавить комментарий, там becose у меня слишком низкое количество очков, поэтому ниже я приведу рабочий пример (это также работать и"локальный url", у):
Загрузчик###:
Есть 3 способа:
Вы можете найти примеры здесь.
Используйте простой способ в PHP копия()`
Примечание: если файл назначения уже существует, он будет перезаписан
PHP для копирования (Функция)
Примечание: Вы должны установить разрешение 777 на папку назначения. Используйте этот метод, если вы скачиваете на свой локальный компьютер.
Специальное примечание: 777 разрешение в системе Unix с чтение/запись/разрешение на выполнение для владельца, группы и всех. В целом мы даем это разрешение активы, которые не очень нужны, чтобы быть скрыты от общественности на веб-сервере. Пример: папку images.
Я использую это для того, чтобы скачать файл
В PHP 4 & 5 Решение:
функцию ReadFile() не представлять какие-либо проблемы с памятью, даже при отправке больших файлов по собственной. URL-адрес может быть использован в качестве имени файла с этой функцией, если фантики функции fopen были включены.
http://php.net/manual/en/function.readfile.php