Jump to content

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


Recommended Posts

  • VIP

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

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

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

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

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 число, и получите результат, опять же это как вариант. Однако, будьте внимательны! До бесконечности увеличивать эти параметры нельзя! Все эти настройки ограничены оперативной памятью, выделяемой Вам сервером

Link to post
Share on other sites
  • VIP

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

Link to post
Share on other sites
  • VIP

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

Link to post
Share on other sites
  • VIP

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

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

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

Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...