|
|
|
|
|
для: Loki
(17.06.2006 в 19:26)
| | поглядел я еще разок тот ифрэйм какой открывает RapidShare и увидел вот это:
<script type="text/javascript" language="javascript">
var d=0;var a=false;function p(m,f){a=false;if(window.XMLHttpRequest){a=new XMLHttpRequest();if(a.overrideMimeType){a.overrideMimeType('text/xml');}}else if(window.ActiveXObject){try{a=new ActiveXObject("Msxml2.XMLHTTP");}catch(e){try{a=new ActiveXObject("Microsoft.XMLHTTP");}catch(e){}}}if(!a){return false;}a.onreadystatechange=o;a.open('GET',m+f,true);a.send(null);}function o(){if(a.readyState==4){if(a.status==200){document.getElementById('progress_block_no').style.visibility="hidden";document.getElementById('progress_block').style.visibility="visible";var g=a.responseText;if(g.length>4){var b=g.split("#");var i=(b[4].replace(/%/,"")/100*550);q(d,i,4500);d=i;document.getElementById('progress_recieved').innerHTML=b[0];document.getElementById('progress_total').innerHTML=b[1];document.getElementById('progress_percent').innerHTML=b[4];document.getElementById('progress_kbpersec').innerHTML=b[2];document.getElementById('progress_minutes').innerHTML=b[3];}else{document.getElementById('progress_block_no').style.visibility="visible";document.getElementById('progress_block').style.visibility="hidden";}}else{}}}function q(j,l,h){var c=15;if(h<=c){document.getElementById('progress_img').width=l;}else{k=l-j;move=Math.round(k/h*c);if(move<1&&k>0){move==3;}e=j+move;document.getElementById('progress_img').width=e;setTimeout("q("+e+", "+l+", "+(h-c)+")",c);}}function r(){var n=new Date();p('/cgi-bin/uploadjs.cgi','?uploadid=147594648645289375&r='+n.getSeconds());setTimeout("r()",5000);}
r();
</script>
|
т.е. используется то же, что и в AJAX'е (XML request вроде). Собственно идея - раз у меня есть AJAX, то нельзя ли этот самый индикатор реализовать на нем? и наверно это ведь попроще будет? (использую xajax) | |
|
|
|
|
|
|
|
для: 1999
(17.06.2006 в 19:16)
| | значит так. в порядке мозгового штурма... сам не пробовал и пока не собираюсь:)
После сабмита, открывается дополнительное окно (как вариант, можно сабмит передавать во фрейм нулевого размера. Далее. Пока первое окно (фрейм) грузит файл на сервер, второе окно дергает на сервере скрипт, который показывает текущий размер файла на сервере, а потом перезугружает сам себя.
Все это очень красиво, но файл грузится во временную директорию под временным именем. Как узнать это имя я пока не придумал. Можно опредлять файл по времени создания, но при большой нагрузке на сервер (когда несколько пользователей одновременно начали загрузку файлов) счетчик будет врать. В остальном, как будто не сложно. | |
|
|
|
|
|
|
|
для: YaRosh
(09.03.2006 в 21:58)
| | хотелось бы поднять тему т.к. мне нужен этот самый индикатор.
тот модуль конешно хорош))) но вот на моем хостинге мне разве кто-нибудь разрешить перекомпилировать пхп как я захочу? Или можно поставить этот модуль прописав что-нибудь в .htaccess???
И вобще неужели нет других методов индикации загрузки файлов на сервер? | |
|
|
|
|
|
|
|
для: cheops
(09.03.2006 в 13:33)
| | Смотри тут: http://pdoru.from.ro/ но этот подуль под *nix системы | |
|
|
|
|
|
|
|
для: YaRosh
(08.03.2006 в 22:44)
| | А название не знаете? | |
|
|
|
|
|
|
|
для: Artem S.
(08.03.2006 в 16:39)
| | Так, после долгих поисков в инете понял, что нужен какой-то модуль для Apache, который правит или добавляет возможности в PHP, вот где бы этот модуль найти? | |
|
|
|
|
|
|
|
для: YaRosh
(07.03.2006 в 21:58)
| | Сделать на php такое нельзя по причине того, что скрипт запускается после закачки файла. Нужно искать варианты perl/c++ | |
|
|
|
|
|
|
|
для: Marlyn
(07.03.2006 в 17:57)
| | А ReGet Delux тут причем? | |
|
|
|
|
|
|
|
для: yarosh
(07.03.2006 в 10:19)
| | Можешь попробовать через ReGet Delux, точно получится, я сам пробовал!!! А на счет тобою сказанного понятия не имею!!! | |
|
|
|
|
|
|
| Требуется сделать индикатор загрузки файлов на сервер(например как на http://rapidshare.de) средствами PHP и JavaScript. Если с JS мне все предельно понятно и ясно, то вот с PHP глухо.
Я себе представляю весь этот процесс так:
Пользователь, выбрав нужный файл жмет "Загрузить", запускается
PHP скрипт, который добавляет в MySQL(или другую базу) данные о том какой файл загружается, куда файл загружается, полный размер файла и еще присваивает этому файлу ID. Далее файл начинает медленно, но верно, загружаться на сервер. В момент нажатия кнопки "Загрузить" еще запускается JS, который открывает отдельное окно или IFRAME где уже другой скрипт, получив информацию о файле из базы данных(получение по его ID) показывает сколько МБ загружено на сервер
Все в инте облазил, но четкого процесса создания такого индикатора не нашел.
Суть проблемы заключается в том, когда мы используем форму загрузки файлов на сервер методом POST после нажатия кнопки "Загрузить", файл сразу начинает загружаться на сервер, а PHP скрипт начинает работать ТОЛЬКО после того, как файл полностью будет загружен на сервер. Т.е. получить данные о файле до его загрузки на сервер не получается
Думал попробовать сделать загрузку файлов через PHP и FTP. В данной ситуации PHP запускается раньше, чем начинается загрузка файла на сервер, но опять же, тут уже не ясно, как определить размер загружаемого файла
Может быть кто-нибудь сталкивался с такой проблемой? | |
|
|
|
|