Всем привет,как то я решил создать сайт, посвящённый диджеям и музыкантам пишущим электронную мухыку в FL Studio.
Ну создать то создал, нужно было теперь "каталог файлов" переделать в что то типа "аудио треки пользователе"
Ну что бы диджеи могли делится своими треками на сайте.
Но на uCoz даётся всего 400 мб места под сайт.
А один трек в среднем весит 10 мб.
То есть можно было бы залить всего 40 треков на сайт( И тут мне пришла идея сделать аплоадер для сайта. Вставить форму добавления в раздел "редактирование и добавления материала" заменить стандартную форму на свою.
И сделать так, что бы mp3 файлы загружались на инородный хостинг, а прямую ссылку возвращали на мой сайт.
Для начала я нашёл бесплатный хостинг, http://2х4.ru(почти бесплатный) там при регистрации анкеты нужно отправить смс стоимостью 8 грн (это примерно 32 руб).
На учётку вам даётся 5 гиг дискового пространства, да и размер максимально загружаемого файла НЕ ОГРАНИЧЕН.
То есть я могу туда запереть хоть фильм в пи*датом качестве размером 4-5 гиг) Это конечно большой плюс.
Тот хостинг конечно поддерживает PHP и прочею хрень.
С помощью одного хорошего программиста Draft'а, я заполучил этот аплоадер.
Он его написал с ноля и настроил под uCoz.
Суть такова, я захожу в каталог файлов, нажимаю добавить материал, заполняю все нужные поля, выбераю на компе нужный мне трек, и нажимаю кнопку загрузить, он грузит трек на инородный хостинг, а прямую ссылку автоматически выставляет в раздел "внешняя ссылка"
Ну затем я нажимаю добавить матереал, и вуаля!)
Но потом возникло одно НО(
Для работы этого аплоадера, у сайта ОБЯЗАТЕЛЬНО должен быть нормальный домен ну к примеру в зоне ru,com или что то такое.
С стандартным доменом ни чего не выйдет.
Затем нам нужно создать пот домен от сайта. Ну вот к примеру у меня сайт такой: www.fl-school.ru
Я создаю такой пот домен: www.files.fl-school.ru и прикрепляю его к инородному хостингу.
Тогда всё будет взаимодействовать.
Но сейчас этот хостинг который я юзал, по не понятным причинам, прикрыл возможность парковки потдоменов(
Точней припарковать можно, но он не будет работать(
Короче я за этот аплоадер када то заплатил денюжку рзработчику.
Сейчас я с бесплатно поделюсь с вами этой штуковиной, и буду искренне рад, если вы сможете его доработать и настроить под другие подули сайтов на uCoz.
Кто то на форуме помню просил такую тягу для фоток, вот можно будет под фото переделать его.
Вот так он будет выглядеть в странице добавления и редактирования матереалов:
В общем вот сам аплоадер и всё что к нему прилагается.
Ну и как его устанавливать я напишу ниже:
Качаем этот архив: http://fl-school.ru/UPLOADER.rar
В нём находится две папки: files и temp. Они пустые.
Так же там лежит php файлик, это сам аплоадер: upload.php.
И .htaccess
И так. Для начала рассмотрим что же у нас в документе .htaccess
Откроем его с помощью блокнота, и вот что мы там увидим:
Quote
AddDefaultCharset utf-8
php_value file_uploads 1
php_value upload_max_filesize 20M
php_value post_max_size 20M
И так стоки:
php_value upload_max_filesize 20M
и
php_value post_max_size 20M
ограничивают максимальный размер загружаемого файла. В нашем случае 20 мб. Можно уменьшить эту цифру или на оборот увеличить. Но больше 100 мб ставить не советую. Ваш внешний хостинг может просто умереть. Хотя это ещё от хостинга зависит)
Теперь рассмотрим начинку самого upload.php
Quote
<?php
// Настройки
$maxfilesize=($_GET['l'] ? $_GET['l'] : 20); // Мак размер в мб.
$filetypes='mp3|wma|wav|ogg';
// Acept File
if($_GET["a"]) {
@rename($_SERVER['DOCUMENT_ROOT']."/temp/".$_GET["a"],$_SERVER['DOCUMENT_ROOT']."/files/".$_GET["a"]);
echo 'upload_acept_ok();';
die();}
if($_GET["d"]) {
$_GET["d"]=str_replace('http://files.fl-school.ru/files/','',$_GET["d"]);
@unlink($_SERVER['DOCUMENT_ROOT']."/files/".$_GET["d"]);
die();}
// Upload
if($_FILES["file"]) {
function removeindir($directory) {
$dir=opendir($directory);
while(($file=readdir($dir))){
if(is_file ($directory."/".$file)){unlink($directory."/".$file);}}
closedir($dir);
return true;}
// Clear Temp
//@mkdir($_SERVER['DOCUMENT_ROOT'].'/temp/');
//@mkdir($_SERVER['DOCUMENT_ROOT'].'/files/');
//removeindir($_SERVER['DOCUMENT_ROOT'].'/temp/');
// Check
if($_FILES["file"]["size"]>1024*$maxfilesize*1024) die('Размер файла не должен превышать '.$maxfilesize.' Mb.');
if(!preg_match('/\S+('.$filetypes.')$/',$_FILES["file"]["name"])) die('Файл должен быть в формате mp3');
// Define
$filepath=$_SERVER['DOCUMENT_ROOT']."/temp/";
$filename=rand(100000,10000000).'_'.$_FILES["file"]["name"];
// Check/Replace
$filename=preg_replace('/[\$\%\^\&\* \#\@\!\?\*\<\>\?\}\{\[\]\=\+\`\\(\)\'\"\,\;\:]/','',$filename);
// Copy
if(copy($_FILES["file"]["tmp_name"],$filepath.$filename)){
echo "
<html>
<head>
</head>
<body style='margin:0;padding:0'>
Файл успешно загружен!
<script type='text/javascript'>
document.domain='fl-school.ru';
up_link=('".$filename."');
if(parent) parent.upload_ok('".$filename."');
</script>
<br><br><br><br><br>
</body>
</html>";}
else {echo 'Произошла ошибка...<br><br><br><br>';}
}
else {
?>
<script>
function uppp() {
document.getElementById('uplst').style.display='block';
document.getElementById('upfrm').style.display='none';}
</script>
<html>
<head>
<link type="text/css" rel="StyleSheet" href="http://fl-school.ru/_st/my.css" />
</head>
<body style='margin:0;padding:0'>
<div id="uplst" style="display:none">Идет загрузка, подождите...<br><br><br><br></div>
<form id="upfrm" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="Загрузить" onclick="uppp()"><br>
Макс. размер: <?echo($maxfilesize)?>Mb<br><br><br>
</form>
</body>
</html>
<?}?>
В 4 строке перечисляются допустимые форматы файлов для загурзки.
Мой аплоадер писался для загрузки аудио, поэтому в нашем случае перечисляются самые популярные аудио форматы:
mp3|wma|wav|ogg
Вы можете их заменить на свои, или просто добавить новые к примеру так: mp3|wma|wav|ogg|gif|jpg|png|rar|zip И так далие.
В это й строке:
@rename($_SERVER['DOCUMENT_ROOT']."/temp/".$_GET["a"],$_SERVER['DOCUMENT_ROOT']."/files/".$_GET["a"]);
мы видм наши папки.
PS Блин, забыл. При установке аплоадера на внешни хостинг нужно сделать следующие:
К примеру мы зарегили себе бесплатный хост, и прикрепили к нему такой потдомен: files.fl-school.ru
теперь заходим через FTP на свой хостинг, и видем там такую папку: files.fl-school.ru это как бы корневая папка.
Рядом с ней, с корневой папкой (ИМЕННО РЯДОМ С КОРНЕВОЙ А НЕ В НЕЙ) создаём папку "temp"
Все файлы сначала будут загружаться в неё, и если пользователь после загрузки не опубликует свой матереал, то файл там и останется. А если опубликует, то он переместится в папку "files" которую мы создадим позней.
Это так сказать защита от не добросовестных пользователей.
Теперь иногда мы сможем заходить на хостинг и чистить папку temp зная что все файлы в ней ни кому не нужны.
Теперь идём в нашу корневую папку: files.fl-school.ru и заливаем в неё файлы из архива. Две папки: "files" и "temp" ОБЯЗАТЕЛЬНО ставим на них права доступа 777 !!!! это обязательно, иначе файлы не будут загружаться на хост.
И туда же в корень заливаем наш : .htaccess и upload.php
Во готово)
Теперь продолжим разберется с начинкой upload.php
Так вот в строке на которой мы остановились показаны наши папки:
@rename($_SERVER['DOCUMENT_ROOT']."/temp/".$_GET["a"],$_SERVER['DOCUMENT_ROOT']."/files/".$_GET["a"]);
Менять ни чего не советую.
В следующий строке прописываем потдомен внешнего хостинга:
$_GET["d"]=str_replace('http://files.fl-school.ru/files/','',$_GET["d"]);
В моём случае это http://files.fl-school.ru/files/
после .ru идёт деректория куда будут загружатся файлы: /files/
В этой строке:
document.domain='fl-school.ru';
Прописываем домен сайта котоый стоит на uCoz
Ну остальное то мелочи, которые менять не нужно.
Тем более что, половину скрипта я не понимаю сам)) Но надеюсь что на этом портале много людей, которые легко смогут понять смысл скрипта)
Короче всё готово, теперь нам нужно вернутся на наш uCoz'овский сайт.
Дуем а каталог файлов - страница добавления и редактирования матереала.
После $BODY$ вставляем это:
Quote
<script>
// By Rad van Cor - www.fl-school.ru)
document.domain="fl-school.ru";
$("#ldM25").after('<tr id="ldM45"><td class="manTd1" id="ldM266">Файл:</td><td class="manTd2" id="ldM276"><iframe name="upfra" id="upfra" src="http://files.fl-school.ru/upload.php?l=50" frameborder="0" height="37" scrolling="no"></iframe></td></tr>');
function upload_ok(url) {
uploaded_file_url=url;
$("#ldF10").val('http://files.fl-school.ru/files/'+url);
$("#ldM31").css('display','none');
$("#ldF18").css('display','none');
$("#ldF18").after('<input class="manFlSbm" id="ldF18int" type="button" style="font-weight:bold;" value="Добавить" onclick="upload_acept()">');
}
function upload_acept() {
if(!window.uploaded_file_url) return false;
$.getScript('http://files.fl-school.ru/upload.php?a='+uploaded_file_url);}
function upload_acept_ok() {$("#ldF18").click();}
</script>
В этой строке:
document.domain="fl-school.ru";
fl-school.ru меняем на домен своего сайта.
В этой строке:
<iframe name="upfra" id="upfra" src="http://files.fl-school.ru/upload.php?l=20" frameborder="0" height="37"
в место: http://files.fl-school.ru/upload.php ссылку к своему аплоадеру. а l=20 это максимальный размер файла, который пользователь может загрузит через аплоадер. Цифру можете уменьшить или увеличить.
Но не в коем случае не ставь те цифру на загрузку максимального размера больше, чем прописали в .htaccess
В этой строке:
$("#ldF10").val('http://files.fl-school.ru/files/'+url);
fl-school.ru меняем на своё.
В этой строке:
$.getScript('http://files.fl-school.ru/upload.php?a='+uploaded_file_url);}
Делаем то же самое. мой домен меняете на свой.
Вот и всё. Теперь можете заливать что хотите и сколько хостите.
Таким образом к сайту можно подключить очень много анкет с хостингом по 5 гиг.
Ну что бы было у вас не 5 а 20-40 или даже 100 гиг . Сколько угодно.
Просто потом нужно все эти действия проводить с каждой анкетой на которой вам будут давать 5 гиг.
А что бы у поль зователей не было на страничке добавления по 10 аплоадеров. Через условные аператоры делайте, что то типа того, что бы все пользователи с ID от 1 до (к примеру) 200 видели uploader1
пользователи с ID от 201 до 401 видели uploader 2
Это будет выглядить примерно так:
<?if($USER_ID$>0 && $USER_ID$<200)?> скрипт аплоадера <?endif?>
<?if($USER_ID$>200 && $USER_ID$<400)?> скрипт аплоадера2 <?endif?>
скрипт аплоадера2 тот же скрипт что и в первом случае, просто там ссылки меням на второй хостинг. и всё.
И так далие)
Собственно всё. Тем кто хотя бы дочитал до конца РЕСПЕКТ) Значит у вас действительно есть терпение и желание наворотить свой сайт)
Кому, что не понятно, пиши те в асю: 450440763 постараюсь помоч чем смогу)
И ОЧЕНЬ СИЛЬНО ПРОСШУ. Если кто из местных умельцев сможет переделать скрипт пот другие модули. Очень прошу сообщить мне в аську.