Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   PHP as3 индикация загрузки файла (http://www.flasher.ru/forum/showthread.php?t=132535)

Artic 13.11.2009 17:46

PHP as3 индикация загрузки файла
 
собственно такой вот вопрос
загружаю файл через FileReference.data
то есть отсылаю data в PHP

и как бы повесить на это индикатор загрузки ?

код
Код AS3:

var request:URLRequest = new URLRequest(
                        "upload.php?name="+ID+file.name+"&folder="+_pathToPhotoOnServer+"&d="+new Date().getTime());
                        request.data = file.data;
                        request.method = URLRequestMethod.POST;
                        urlLoader.addEventListener(Event.COMPLETE, onServerAnswerGetMenu);
                        request.contentType = 'application/octet-stream';
                        urlLoader.load(request);

PHP код:

<?php
    
    $fileData 
= $GLOBALS[HTTP_RAW_POST_DATA];
    
mkdir($_GET['folder']);
    
$fileName = ''.$_GET['folder'].'/'.$_GET['name'].'';
    
$fp = fopen($fileName, "w");
    
fwrite($fp,$fileData);
    
fclose($fp);
    echo 
"file write - OK ".$fileName;
?>


gloomyBrain 13.11.2009 17:51

Может быть так:
Код AS3:

addEventListener(ProgressEvent.PROGRESS, updateMyLoader)

?

Artic 13.11.2009 18:08

нее
1 грузит PHP скрипт а не flash
2 пробовал PROGRESS не срабатывает ^^

gloomyBrain 13.11.2009 18:59

1 - и так понятно =)
2 - должен срабатывать, по крайней мере об этом сказано в help'е

+ из того же help'а:
Цитата:

- Content-Type со значением multipart/form-data
- Content-Disposition, у которого атрибут name имеет по умолчанию значение Filedata, а атрибут filename указывает имя исходного файла.
- Двоичное содержимое файла

kackbip 13.11.2009 19:20

gloomyBrain, URLLoader не диспатчит событие ProgressEvent.PROGRESS, это событие срабатывает при FileReference.upload, но автор не пользуется этим методом, видимо, по причине того, что он модифицирует файл перед отправкой.

Это чтобы брожение остановить. А по теме - не знаю как

gloomyBrain 13.11.2009 19:49

Цитата:

загружаю файл через FileReference.data
то есть отсылаю data в PHP
- вот это я увидел
Код AS3:

urlLoader.addEventListener(Event.COMPLETE, onServerAnswerGetMenu);

- а вот это упустил...
Отсюда и брожения

Цитата:

по причине того, что он модифицирует файл перед отправкой
а какая разница?

Artic 13.11.2009 22:48

эмммм то есть через FileReference.upload можно без PHP скрипта аплодить файлы ? или как ? я все то что нашел про загрузку файлов на сервер то и использую

gloomyBrain 13.11.2009 23:25

Со скриптом, конечно
Просто видно будет сколько отправлено

Artic 13.11.2009 23:46

простой пример можете написать ?

kackbip 14.11.2009 08:47

gloomyBrain, Никто не догнал чего автор хочет :) Ну щас расскажем

Код AS3:

fileReference.addEventListener(ProgressEvent.PROGRESS, onProgress);
fileReference.upload(urlRequest);
function onProgress(evt:ProgressEvent):void{
evt.bytesTotal;
evt.bytesLoaded;
}

Данный подход будет работать, если вам нужно выбрать файл на локальной машине и отправить его на сервер без модификация. Если же вы загружаете файл во флэшку (FileReference.load), модифицируете его FileReference.data и потом хотите отправить на сервер, то тут придется исрользовать URLLoader

Felicast 14.11.2009 11:30

извините, мне не приходилось работать с загрузкой (upload) файлов на сервер. но логическое мышление подсказывает мне, что evt.bytesLoaded; будет отображать загруженные (loaded) данные, то есть ответ от сервера (в данном случае
PHP код:

echo "file write - OK ".$fileName; 

)

если я ошибаюсь поправьте меня пожалуйста.

kackbip 14.11.2009 11:46

Свойста bytesLoaded и bytesTotal события ProgressEvent.PROGRESS, генерируемого FileReference-ом при upload-е, говорят именно о прогрессе аплоада.
Цитата:

evt.bytesLoaded; будет отображать загруженные (loaded)
свойство bytesLoaded не уточняет били ли данные UPloaded или DOWNloaded, так что логика вроде нигде не нарушается :)
ПС: говорю из собственного опыта. Так все и есть :)

Artic 14.11.2009 14:00

так все это конечно замечательно ! а что в скрипте то должно быть ? оО или флашь сам отправляет файл на стервер

Felicast 14.11.2009 16:26

Цитата:

стервер
опечатка по фрейду:)

kackbip 14.11.2009 17:59

Цитата:

а что в скрипте то должно быть ?
А в начале темы вроде что-то похожее на правду было написано. Никаких примочек от сервера для определения прогресса аплоада не нужно.

Artic 14.11.2009 18:55

Цитата:

опечатка по фрейду
не так и задуманно ))))

Цитата:

А в начале темы вроде что-то похожее на правду было написано. Никаких примочек от сервера для определения прогресса аплоада не нужно.
блин ! совсем не понимаю ! куда при FileReference.upload сувать URLRequest ??? может кто то накидать пример не большой ?

kackbip 14.11.2009 19:31

URLRequest сувать в FileReference.upload
Ну в хелпе ведь все доступно объясняется. Смотрите внимательнее. Даже на русском есть хелп...
http://help.adobe.com/ru_RU/AS3LCR/F...e.html#upload()

Artic 14.11.2009 20:02

Цитата:

Данные FileReference POST не могут иметь тип ByteArray.
собственно получаю ошибку

делал так
Код AS3:

var request:URLRequest = new URLRequest(
                        "upload.php?name="+ID+file.name+"&folder="+_pathToPhotoOnServer+"&d="+new Date().getTime());
                        request.data = file.data;
                        file.upload(request);

собсно как правильно нада ?


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

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.