Просмотр полной версии : PHP as3 индикация загрузки файла
собственно такой вот вопрос
загружаю файл через FileReference.data
то есть отсылаю data в PHP
и как бы повесить на это индикатор загрузки ?
код
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
$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
Может быть так:
addEventListener(ProgressEvent.PROGRESS, updateMyLoader)
?
нее
1 грузит PHP скрипт а не flash
2 пробовал PROGRESS не срабатывает ^^
gloomyBrain
13.11.2009, 18:59
1 - и так понятно =)
2 - должен срабатывать, по крайней мере об этом сказано в help'е (http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/net/FileReference.html)
+ из того же help'а:
- Content-Type со значением multipart/form-data
- Content-Disposition, у которого атрибут name имеет по умолчанию значение Filedata, а атрибут filename указывает имя исходного файла.
- Двоичное содержимое файла
gloomyBrain, URLLoader не диспатчит событие ProgressEvent.PROGRESS, это событие срабатывает при FileReference.upload, но автор не пользуется этим методом, видимо, по причине того, что он модифицирует файл перед отправкой.
Это чтобы брожение остановить. А по теме - не знаю как
gloomyBrain
13.11.2009, 19:49
загружаю файл через FileReference.data
то есть отсылаю data в PHP
- вот это я увидел
urlLoader.addEventListener(Event.COMPLETE, onServerAnswerGetMenu);
- а вот это упустил...
Отсюда и брожения
по причине того, что он модифицирует файл перед отправкой
а какая разница?
эмммм то есть через FileReference.upload можно без PHP скрипта аплодить файлы ? или как ? я все то что нашел про загрузку файлов на сервер то и использую
gloomyBrain
13.11.2009, 23:25
Со скриптом, конечно
Просто видно будет сколько отправлено
простой пример можете написать ?
gloomyBrain, Никто не догнал чего автор хочет :) Ну щас расскажем
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) данные, то есть ответ от сервера (в данном случае echo "file write - OK ".$fileName;)
если я ошибаюсь поправьте меня пожалуйста.
Свойста bytesLoaded и bytesTotal события ProgressEvent.PROGRESS, генерируемого FileReference-ом при upload-е, говорят именно о прогрессе аплоада.
evt.bytesLoaded; будет отображать загруженные (loaded)
свойство bytesLoaded не уточняет били ли данные UPloaded или DOWNloaded, так что логика вроде нигде не нарушается :)
ПС: говорю из собственного опыта. Так все и есть :)
так все это конечно замечательно ! а что в скрипте то должно быть ? оО или флашь сам отправляет файл на стервер
Felicast
14.11.2009, 16:26
стервер
опечатка по фрейду:)
а что в скрипте то должно быть ?
А в начале темы вроде что-то похожее на правду было написано. Никаких примочек от сервера для определения прогресса аплоада не нужно.
опечатка по фрейду
не так и задуманно ))))
А в начале темы вроде что-то похожее на правду было написано. Никаких примочек от сервера для определения прогресса аплоада не нужно.
блин ! совсем не понимаю ! куда при FileReference.upload сувать URLRequest ??? может кто то накидать пример не большой ?
URLRequest сувать в FileReference.upload
Ну в хелпе ведь все доступно объясняется. Смотрите внимательнее. Даже на русском есть хелп...
http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/net/FileReference.html#upload()
Данные FileReference POST не могут иметь тип ByteArray.
собственно получаю ошибку
делал так
var request:URLRequest = new URLRequest(
"upload.php?name="+ID+file.name+"&folder="+_pathToPhotoOnServer+"&d="+new Date().getTime());
request.data = file.data;
file.upload(request);
собсно как правильно нада ?
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.