VIP by_limon 280 Posted July 11, 2015 VIP Report Share Posted July 11, 2015 Как реализовать загрузку файлов на хостинг по url с других сайтов минуя свой компьютер? Нашел на просторах интернета вот такое решение <html> <head> <title>Загрузка файлов URL</title> </head> <body> <h2>Загрузка файлов URL</h2> <form method="get"> Введите URL:<br> <input type="text" name="url"/> <input type="submit" value=" загрузить "/> </form> <?PHP if (!empty($_GET['url'])) { $file = basename($_GET['url']); if (file_get_contents($_GET['url'])) { $content = file_get_contents($_GET['url']); $f = fopen( "$file", "w" ); if (fwrite( $f, $content ) === FALSE) { echo "Не могу произвести запись в файл."; exit; }else echo "Ура! Файл <font color='red'>" .$file ."</font> записан."; fclose( $f ); }else echo "Не могу считать файл."; } ?> </body> </html> Но так как файлы большие (до 1гб) времени обработки не хватает и вылетает 504 ошибка. P.S. SSH не подходит так как пользоваться этим нужно не одному человеку Link to post Share on other sites
VIP campusboy 912 Posted July 11, 2015 VIP Report Share Posted July 11, 2015 Так увеличьте его выполнение в htaccesse, если это позволяет хостинг. Плюс файловая система должна разрешать размещать такие файлы. by_limon and Shnapik 2 Link to post Share on other sites
VIP by_limon 280 Posted July 11, 2015 Author VIP Report Share Posted July 11, 2015 Увеличил время обработки до 900 секунд в php.ini, маленькие фалы загружаются быстро, файлы больше 100мб все равно вызывают 504 Link to post Share on other sites
WQP 360 Posted July 11, 2015 Report Share Posted July 11, 2015 Попробуй через $source = "http://www.remotesite.com/video.avi"; $dest = "video/video.avi"; copy($source, $dest); при этом время работы скрипта увеличь до максимального. Когда-то делал парсер картинок инстаграма функция помогла. by_limon 1 Link to post Share on other sites
Shnapik 108 Posted July 11, 2015 Report Share Posted July 11, 2015 Увеличил время обработки до 900 секунд в php.ini, маленькие фалы загружаются быстро, файлы больше 100мб все равно вызывают 504 Попробуйте поиграться вот с этим: max_execution_time - максимальное время, которое может выполняться скрипт. Как правило, стоит 30-60 секунд. max_input_time - максимальное время, в течение которого могут приниматься данные на сервер. Здесь также стоит порядка 30-60 секунд. upload_max_filesize - максимальный размер файла, который допускается для загрузки на сервер. Ключевая настройка, однако, вопреки общему заблуждению, далеко не единственная необходимая для загрузки больших файлов в РHP. post_max_size - максимальный размер отправляемых данных. При такой схеме: "upload_max_filesize < post_max_size < memory_limit" Почему все 4 опции так важны max_execution_time - здесь нужно поставить время, за которое должен успеть загрузиться файл. Очевидно, что файл размеров 30 МБ вряд ли загрузится за 30-60 секунд, поэтому безусловно, это время надо увеличивать. max_input_time - аналогично с max_execution_time. Ведь если первые 60 секунд будут приниматься данные, а потом перестанут, то вновь файл не успеет загрузиться. upload_max_filesize - эту опцию меняют все и без проблем, однако, когда ничего не меняется - удивляются, а ведь она хоть и является ключевой, но, тем не менее, другие три так же очень важны. post_max_size - максимальный размер отправляемых данных так же очевиден, ведь если файл большого размера, то он не сможет полностью отправиться из-за этого ограничения. Увеличьте все размеры на N число, и получите результат, опять же это как вариант. Однако, будьте внимательны! До бесконечности увеличивать эти параметры нельзя! Все эти настройки ограничены оперативной памятью, выделяемой Вам сервером campusboy 1 Link to post Share on other sites
VIP by_limon 280 Posted July 12, 2015 Author VIP Report Share Posted July 12, 2015 Спасибо WQP сильно помог в решении проблемы если кому потребуется - вот код <html> <head> <title>Загрузка файлов URL</title> </head> <body> <h2>Загрузка файла</h2> <form method="get"> Введите URL:<br> <input type="text" name="url"/> <input type="submit" value=" загрузить "/> </form> <?php $name = md5(date('Y-m-d H:i:s').rand(0, 1000)); $folder = ''; //в какую папку сохранять $source = ($_GET['url']); $dest = $folder.$name.'.flv'; copy($source, $dest); echo 'домен'.$folder.$name.'.flv'; ?> </body> </html> После загрузки вам выведется ссылка на файл. Обратите внимание на то что у меня автоматически в название вводится формат flv, замените его на свой (на формат тех файлов которые собираетесь загружать). Irridian and campusboy 2 Link to post Share on other sites
VIP mrak7575 349 Posted July 14, 2015 VIP Report Share Posted July 14, 2015 А можно мануал по установки этого скрипта. У меня смс дле, и можно выбирать папку для загрузки? И задавать свое имя файла, типа 0001, 0002, 00003 и чтоб сам скрипт менял имя файла raynar 1 Link to post Share on other sites
VIP by_limon 280 Posted July 14, 2015 Author VIP Report Share Posted July 14, 2015 А можно мануал по установки этого скрипта. У меня смс дле, и можно выбирать папку для загрузки? И задавать свое имя файла, типа 0001, 0002, 00003 и чтоб сам скрипт менял имя файла <html> <head> <title>Загрузка файлов URL</title> </head> <body> <h2>Загрузка файла</h2> <form method="get"> Введите URL:<br> <input type="text" name="url"/> Введите название (с форматом):<br> <input type="text" name="name"/> <input type="submit" value=" загрузить "/> </form> <?php $name = ($_GET['name']); $folder = ''; $source = ($_GET['url']); $dest = $folder.$name.; copy($source, $dest); echo 'http://site.ru/'.$folder.$name.; ?> </body> </html> Установки не требуется, просто сохраните в файл с расширением .php. чтобы установить папку в которую загружать файлы нужно изменить значение переменной $folder, например $folder = 'zip/' (обязательно со слешем в конце). Не забывайте в названии файла писать формат (тот же что и у загружаемого файла). Link to post Share on other sites
VIP mrak7575 349 Posted July 14, 2015 VIP Report Share Posted July 14, 2015 Ок, а переименовать его по счетчику нельзя? Чтоб скрипт проверял кол.во файлов и переименовывал Link to post Share on other sites
VIP by_limon 280 Posted July 14, 2015 Author VIP Report Share Posted July 14, 2015 Ок, а переименовать его по счетчику нельзя? Чтоб скрипт проверял кол.во файлов и переименовывал по идее можно, но я не силен в php, на сколько мне известно придется подключать БД Link to post Share on other sites
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now