Архивы: по дате | по разделам | по авторам

Закачка mp3

АрхивRTFM
автор : Антон Орлов   26.10.2004

Локальная сеть с выходом в Интернет - хорошая вещь. Можно и файлы пересылать, и музыку загружать, и даже фильмы. Однако иногда вследствие ошибок в настройке шлюза между сетью и Интернетом определенные типы файлов становится невозможно загружать. Например, web-страницы, рисунки и zip-архивы грузятся, а mp3-файлы и видеоролики - нет. А беседовать с администратором сети бесполезно: у него всегда нет ни времени, ни сил, ни желания... Особенно в крупных корпоративных сетях, где такая проблема чаще всего и возникает.

Но если вы знаете язык программирования PHP хотя бы в минимальной степени, то решение этой задачи для вас окажется неприлично простым. Правда, при одном условии - если у вас есть доступ к какому-нибудь хостингу, на котором PHP поддерживается в полном объеме. Текст сценария, решающего данную проблему, приводится ниже. К сожалению, на комментарии к его командам места нет (если заинтересуетесь, то вам придется изучить Руководство по PHP), но идея его такова: скопировать файл с запрещенным расширением на тот же самый сайт, на котором этот сценарий находится, но при этом присваивая ему другое имя, с "разрешенным" расширением. После этого вам останется лишь скачать скопированный файл - а это вам удастся, ведь его расширение не будет мешать загрузке! - и переименовать его назад.

Сценарий логично сделать на двух страницах, разместив на первой странице форму с полем ввода нужного URL, а на второй - собственно программу загрузки удаленного файла и его сохранения под другим именем. Первый файл должен содержать такие строки:

<form action=zakfile.php method=post>
<input type=text name=url size=100><br>
<input type=submit value="Ok"></form>

Во втором файле (в данном случае он должен называться zakfile.php) поместите такой сценарий:

<?php
echo $HTTP_POST_VARS['url'];
$hdl = fopen($HTTP_POST_VARS['url'], "rb");
$sr = fread($hdl, 10000000);
fclose($hdl);
$hdl = fopen("file.zip", "wb");
fwrite($hdl, $sr);
fclose($hdl);
?>
<br>Готово. <a href=file.zip>Закачать</a>

В результате, если вы введете на первой странице сценарий URL какого-либо файла и нажмете кнопку Ok, то этот файл будет скопирован на тот сайт, где страницы сценария находятся, под именем file.zip. Исходное имя файла также выводится на web-страницу, так что переименование файла после скачивания можно выполнить посредством копирования и вставки имени.

Обратите внимание на второй параметр в команде fread в 4-й строчке сценария. Это - максимальный размер файла, с которым может работать сценарий, и его значение должно быть меньше объема оперативной памяти, который выделяется сценариям web-сервером. На каждом хостинге эта величина своя, так что подберите ее методом проб и ошибок. Оптимальное значение для начала экспериментов - 10000000 (10 миллионов байт).

Если шлюз вашей локальной сети не пропускает и файлы с расширением .zip, то прикажите сценарию дать скопированному файлу расширение .jpg или .gif, соответственно изменив имя этого файла в сценарии. Картинки-то уж через любой шлюз пройдут.

Если у вас нет аккаунта на каком-либо из хостингов, то постарайтесь найти web-мастера, который бы по вашей просьбе разместил бы страницы сценария на своем сайте. Для его ресурса такое размещение опасности не представит - тексты сценария он все равно просмотрит перед размещением, а максимальный размер занимаемого скачиваемым файлом места определяется вторым параметром команды fread в сценарии. Так как каждый новый закачиваемый файл записывается поверх предыдущего, то "забивания" сайта скачанными файлами не произойдет.

Выполнив эти рекомендации, вы сможете обходить распространенную ошибку шлюза локальной сети и загружать любые файлы любых форматов без особых проблем. Если же доступ к тому сайту, на котором размещен сценарий, почему-либо окажется перекрыт, то - к вашим услугам анонимайзеры, да и просто перенести сценарий на другой сайт несложно. Так что пользуйтесь информационным богатством Интернета без оглядки на какие-либо ошибки шлюзов - и удачи вам в этом!


Результат работы сценария
© ООО "Компьютерра-Онлайн", 1997-2024
При цитировании и использовании любых материалов ссылка на "Компьютерру" обязательна.