IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Веб-программирование (http://www.imho.ws/forumdisplay.php?f=29)
-   -   Динамическое отображение размера файла в момент закачки. КАК? (http://www.imho.ws/showthread.php?t=54700)

Sinker 24.03.2004 21:05

Динамическое отображение размера файла в момент закачки. КАК?
 
Есть форма <form method=post action="123.php" enctype=multipart/form-data>
Выполнение всех функций в 123.php происходит только после полной заливки файла на сервер во временную директорию. Нужно же постоянно показывать человеку сколько файла уже залито. Кто сталкивался с такой проблемой, помогите, PLZ.

ЗЫ. Чувствую, что спасет меня, если я буду жестко указывать php с каким tmp_name заливать файл. Вопрос, как его заставить заливать с нужным мне именем, а не php1234 (цифры любые).

mmaaxx 24.03.2004 21:33

Мне кажется что проще всего такое делать с помощью javascript - загрузил, отобразил (скажем фон td поменял), без перезагрузки самой страницы. Тоесть загружать на сервер не по http, а javascript-ом (можна даже автоматизировать, правильно настроив безопасность). Есдинственно но: это скорее всего будет работать только из-под IE.

Sinker 24.03.2004 21:42

А хотя бы простенький примерчик? Кусочек кода? А то я с javascript даже не на Вы, а на Ваше Высочество...

BiГ 24.03.2004 21:52

Отображение инфы закачиваемого файла в момент закачки отобразить не получится никак ... это особенности веб-серверов ...
посмотреть инфу (размер, содержание и пр.) можно только после полной закачки на сервер ...

А с помощью JavaScript получить доступ к локальным файлам - не смешите мня ... :)

mmaaxx 24.03.2004 22:06

BiГ
Ну ничего смешного нету, но я наверно неправильно выразился. Не по средствам JavaScript, а ActiveX-ом вызваным из JavaScript.

Sinker

<script>
var fileName="C:\\1.jpg";

var fp=new ActiveXObject("ADODB.Stream");

fp.Type=1;
fp.Open();
fp.LoadFromFile(fileName);

var request=new ActiveXObject("Msxml2.XMLHTTP");
request.open("POST","http://host/upload.php",false);
request.send(fp.read());
</script>
upload.php вытаскивает картинку из $HTTP_RAW_POST_DATA и пишет куда надо.

(с) гоша .http://phpclub.ru/talk/showthread.ph...E8%F0%F3%F1%FB

Но повторяюсь, в настройках безопасности нужно настроить, что сайт является "trusted" и может делать всё что угодно...
(Правда народ говорил, что в некоторых версиях (имееться введу насколько обновлена ОС) это проходит просто-так

упс, только я неправиольно прочитал первый пост. этот метод годится для отображения загрузки файлоВ, и по HTTP ты точно не сможешь узнать сколько загружено . Но может где-то докопаешся до загруженного обьёма в ActiveXObject("Msxml2.XMLHTTP"); - вся инфа на MSDN.

В противном случае - аплет или activex тебя спасут точно.

BiГ 25.03.2004 02:02

mmaaxx
Не безопасно это получается ... таким макаром только пароли тырить ... :blin:

Sinker 25.03.2004 11:44

Ну ведь сделано же это как-то на фотоцентре. Заливаешь фотку, а он тебе показывает прогресс.

RaZEr 25.03.2004 11:57

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

Sinker 25.03.2004 12:05

Как узнать имя этого временного файла? $_FILES["file"]["tmp_name"] в 123.php обрабатывается после полной заливки файла в этот временный файл.

shuron 25.03.2004 14:19

Лучше написать аплет и не парится...
-аплет будет работать не только на IE
-если файл большой его можно будет разбивать даже..
-статус показывать естественно нефиг делать...
-и другие фичи..

Есть один ньюанс.. помойму РНP (могу ошибатся) закаченные файлы держит в оперативке..
пока сним не разобратся..
так что если большие файлы то лучше... ловить их перлом..
Ну а если это для небольших картинок задуманно тогда пофиг
чем ловить.



:dance:

BRULIK 25.03.2004 14:28

Цитата:

Лучше написать аплет и не парится...
продемонстрируй please

Hubbitus 25.03.2004 15:05

Я так понял нужно показывать прогресс загрузки файла на сервер? (на приведенном сайтике мне просто написали "Идет загрузка - ждите...) Если да, то это IMHO не возможно.

Но, я думаю можно сделать это приблизительно: по разрешению, формату и качеству приблизительно оценить размер фотографии (а может на JavaScript можно и напрямую размер узнать?), оценить скорость соединения с клиентом (естественно тоже приблизительно) и рассчитать как должен бар двигаться! Я понимаю что это не лучшее решение, но как вариант...

Если Вы более конкретно опишете стоящую задачу тогда будет и проще оценить что нужно сделать!

shuron 25.03.2004 15:23

BRULIK
на это надо время..
аплеты я не умею писать за 5 минут...
а время сейчас ну ни как нет..
а вообще напишу может в апреле...

потерпишь?:biggrin:

Добавлено через 7 минут:
Кстати на приведённой выше страничке
это даже интереснее сделанно на перле...

http://print.photocenter.ru/progress.pl а сылку можете не жать это просто место нахождение их скрипта..

тоесть я помню где-то слыхал, что перл по другому с уплоадом обходиться..
возможно там есть возможность раскопать статус закачки...
но это уже вопрос к спецам по перлу...:virus:


Часовой пояс GMT +4, время: 18:14.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.