by_limon

Загрузка файлов по url на хостинг

10 posts in this topic

Как реализовать загрузку файлов на хостинг по 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 не подходит так как пользоваться этим нужно не одному человеку

Share this post


Link to post
Share on other sites

Так увеличьте его выполнение в htaccesse, если это позволяет хостинг. Плюс файловая система должна разрешать размещать такие файлы.

by_limon and Shnapik like this

Share this post


Link to post
Share on other sites

Увеличил время обработки до 900 секунд в php.ini, маленькие фалы загружаются быстро, файлы больше 100мб все равно вызывают 504 

Share this post


Link to post
Share on other sites

Попробуй через

$source = "http://www.remotesite.com/video.avi";
$dest = "video/video.avi";
copy($source, $dest);

при этом время работы скрипта увеличь до максимального. Когда-то делал парсер картинок инстаграма функция помогла.

by_limon likes this

Share this post


Link to post
Share on other sites

Увеличил время обработки до 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 likes this

Share this post


Link to post
Share on other sites

Спасибо 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, замените его на свой (на формат тех файлов которые собираетесь загружать).

campusboy and Irridian like this

Share this post


Link to post
Share on other sites

А можно мануал по установки этого скрипта. У меня смс дле, и можно выбирать папку для загрузки? И задавать свое имя файла, типа 0001, 0002, 00003 и чтоб сам скрипт менял имя файла

raynar likes this

Share this post


Link to post
Share on other sites

А можно мануал по установки этого скрипта. У меня смс дле, и можно выбирать папку для загрузки? И задавать свое имя файла, типа 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/' (обязательно со слешем в конце). Не забывайте в названии файла писать формат (тот же что и у загружаемого файла).

Share this post


Link to post
Share on other sites

Ок, а переименовать его по счетчику нельзя? Чтоб скрипт проверял кол.во файлов и переименовывал

Share this post


Link to post
Share on other sites

Ок, а переименовать его по счетчику нельзя? Чтоб скрипт проверял кол.во файлов и переименовывал

по идее можно, но я не силен в php, на сколько мне известно придется подключать БД

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.