Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Ответ от сервера (http://www.flasher.ru/forum/showthread.php?t=126133)

AndyRoot 11.06.2009 16:37

Ответ от сервера
 
Привет всем! Пожалуйста, помогите решить проблему. Я уже весь форум облазил и все поисковики замучил, а ответа не нашел. Мне надо сделать мульти-аплоад картинок. Саму загрузку я сделал, все работает. Но есть несколько небольших проблем. Я делаю так: выбираю файлы и нажимаю кнопку «Оправить». Файлы, по очереди отправляются пхп-файлу, который их сохраняет в папку. Мне надо что этот файл возвращал название файла (т.к имя файла может измениться, если такой файл уже есть).

В пхп название выводиться так
PHP код:

echo "<xml param='fname'>тут_название.jpg</xml>"

Flash отправляет файл следующим образом
Код AS1/AS2:

submit_btn.onRelease = function(){
        text3.addItem("Загрузка началась...");
        submit_btn.enabled = false;
        var item:FileReference = new FileReference();
        var list:Array = file_List.fileList;
 
        for(var i:Number = 0; i < list.length; i++) {
                item = list[i];
                if(item.size > maxSize) {
                        text3.addItem("Файл слишком большой. Максимальный размер: " + maxSize);
                } else {
                        item.addListener(listener);
                        item.upload(uploadScript);
                }
        }
}

Что нужно добавить, чтобы получить ответ от сервера? Пишу для Flash 8 (AC2.0).

Dr.OH 11.06.2009 17:22

ну, во-первых, надо посмотреть, как пишется xml-файл. Т.к. то, что вы написали - это ни разу не xml.
во-вторых, в php не забыть выставить необходимые заголовки. Я использую следующие:
Код:

header("Expires: Mon, 1 Jul 1990 05:00:00 GMT");
                header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
                header("Cache-Control: no-cache, must-revalidate");
                header("Pragma: no-cache");
                header("Content-type: text/xml; charset=utf-8");

Добавлено через 3 минуты
А разве FileReference возвращает какие-то XML-данные?

AndyRoot 11.06.2009 21:55

Цитата:

Сообщение от Dr.OH (Сообщение 827269)
ну, во-первых, надо посмотреть, как пишется xml-файл. Т.к. то, что вы написали - это ни разу не xml.

Да, действительно, это не корректный XML-файл. И я это знаю. Однако если использовать LoadVars (load) с событием onLoad, все прекрасно работает. Так что, я не думаю, что дело только в этом.

Цитата:

Сообщение от Dr.OH (Сообщение 827269)
во-вторых, в php не забыть выставить необходимые заголовки. Я использую следующие:
Код:

header("Expires: Mon, 1 Jul 1990 05:00:00 GMT");
                header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
                header("Cache-Control: no-cache, must-revalidate");
                header("Pragma: no-cache");
                header("Content-type: text/xml; charset=utf-8");

Добавлено через 3 минуты
А разве FileReference возвращает какие-то XML-данные?

Заголовки это хорошо, но не работает. Насчет FileReference, я тоже не нашел возможности, чтобы мне вернулись данные (можно даже и не XML). Но может есть вариант, может на OnComplete или еще куда обработку поставить? Неужели никто не знает?

Dr.OH 11.06.2009 22:35

onComplete - это всего лишь событие, которое вызывается по завершению загрузки файла.

Добавлено через 9 минут
а почему просто нельзя сделать сначала на сервер тестовый запрос по поводу того, как будет называться этот файл? Т.е. отправляем на сервер имя файла, например, myFile.txt, а от сервера получаем отклик с новым именем этого файла, например, myFile_01.txt (если такой уже есть) или myFile.txt (если еще нет). а дальше в загружаем файл.

AndyRoot 12.06.2009 07:34

Раз на это событие (OnComplete) нельзя ничего "повесить", то видимо, придеться делать так, как вы сказали.

Спасибо за ответ.

mooncar 12.06.2009 10:57

Цитата:

Сообщение от Dr.OH (Сообщение 827269)
то, что вы написали - это ни разу не xml.

Объясните, почему? Вроде бы все верно написано - простейший и правильный XML.
Присутствует корневой дескриптор xml с атрибутом param.

AndyRoot 13.06.2009 10:01

Есть еще мысли у кого-нибудь? Или другого варианта не существует в моем случае?

Dr.OH 13.06.2009 10:44

mooncar, просто зайдите по ссылке в том же посте. там подробная статья про то, как должен выглядеть корректный xml.

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

mooncar 13.06.2009 10:50

Цитата:

Сообщение от Dr.OH (Сообщение 827737)
mooncar, просто зайдите по ссылке в том же посте. там подробная статья про то, как должен выглядеть корректный xml.

Я боялся такого вашего ответа, про "зайдите". Не стал бы писать, если бы не зашел.
И вики, и учебник говорят о том, что код с т.зр. XML верный. То что нет декларации - оба источника говорят, что она не обязательна.
Не хочу быть занудой, но где неправильность? Скоро делаю нечто похожее, хочется знать.

Nirth 13.06.2009 11:10

Mooncar прав, декларация XML не критична.


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

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