Ну, этот кажется довольно простым, и это так. Все, что вам нужно сделать, чтобы загрузить файл на ваш сервер:
file_put_contents("Tmpfile.zip", file_get_contents("http://someurl/file.zip"));
Только есть одна проблема. Что делать, если у вас есть большой файл, например, 100 МБ. Тогда вам не хватит памяти, и вы не сможете загрузить файл.
То, что я хочу, - это способ записи файла на диск во время его загрузки. Таким образом, я могу загружать большие файлы без проблем с памятью.
Ответы:
Начиная с PHP 5.1.0,
file_put_contents()
поддерживается запись по частям путем передачи дескриптора потока в качестве$data
параметра:Из руководства:
(Спасибо Хакре .)
источник
allow_fopen_url Off
установлен в php.ini (хорошая идея для безопасности), ваш скрипт будет сломан.file_get_contents()
что не будет работать, если бы это было так (см. OP).fopen
; предотвращает неблагоприятные воздействия на изображения и другие не простые текстовые файлы.источник
Попробуйте использовать cURL
Я не уверен, но я верю с
CURLOPT_FILE
опцией, которую он пишет, поскольку это тянет данные, т.е. не буферизируетсяисточник
$fh = fopen('/path/to/download/the/file/to.zip', 'w');
и закройте с помощьюfclose($fh);
aftercurl_close($ch);
. И установитьCURLOPT_FILE => $fh
prodigitalson в ответ не работает для меня. Я получил
missing fopen in CURLOPT_FILE
больше деталей .Это сработало для меня, включая местные URL:
источник
.php
файл и запустите на целевом сервереЗагрузчик:
источник
set_time_limit (24 * 60 * 60);
должен быть помещен в петлю. Это не имеет никакого эффекта в начале сценария.источник
Есть 3 способа:
Вы можете найти примеры здесь .
источник
Используйте простой метод в php
copy()
Примечание: если файл назначения уже существует, он будет перезаписан
PHP copy () Функция
Примечание. Необходимо установить разрешение 777 для папки назначения. Используйте этот метод при загрузке на локальный компьютер.
Специальное примечание: 777 - это разрешение в системе на основе Unix с полным разрешением на чтение / запись / выполнение для владельца, группы и всех остальных. В целом, мы даем это разрешение активам, которые не так важны, чтобы их можно было скрыть от общественности на веб-сервере. Пример: папка с изображениями.
источник
Я использую это, чтобы загрузить файл
источник
Решение PHP 4 & 5:
readfile () сам по себе не создает проблем с памятью, даже при отправке больших файлов. URL-адрес может использоваться в качестве имени файла с этой функцией, если включены обертки fopen.
http://php.net/manual/en/function.readfile.php
источник