Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Flex

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 16.01.2013, 19:43
Чеширский Кот вне форума Посмотреть профиль Отправить личное сообщение для Чеширский Кот Найти все сообщения от Чеширский Кот
  № 1  
Ответить с цитированием
Чеширский Кот

Регистрация: Mar 2012
Сообщений: 40
По умолчанию FileReference + ColdFusion

Здравствуйте.

Как получить имя (новое имя) загруженного файла на сервер?
Flash Builder.

Код AS3:
private var fileReferenceUpload:FileReference;
...
fileReferenceUpload.addEventListener(Event.COMPLETE, onComplete_fileReferenceUpload);
...
fileReferenceUpload.upload(new URLRequest(../uploader.cfm));

uploader.cfm
Код AS3:
<cffile 
	result="CFFILE.ServerFile"
	action="upload"
	filefield="Filedata"
        destination="#ExpandPath('./Photo/')#"
	nameconflict="MakeUnique" />
Если на сервер загружается файл с таким же именем, что уже есть на сервере, то благодаря nameconflict="MakeUnique" у нового файла будет другое имя CFFILE.ServerFile.
Вопрос как его получить обратно с сервера?

Старый 17.01.2013, 01:03
maxkar вне форума Посмотреть профиль Отправить личное сообщение для maxkar Найти все сообщения от maxkar
  № 2  
Ответить с цитированием
maxkar

Регистрация: Nov 2010
Сообщений: 497
Отдавайте из скрипта имя нового файла. В клиенте в fileReference в событии uploadCompleteData получайте ответ и разбирайте его.

Старый 17.01.2013, 12:34
Чеширский Кот вне форума Посмотреть профиль Отправить личное сообщение для Чеширский Кот Найти все сообщения от Чеширский Кот
  № 3  
Ответить с цитированием
Чеширский Кот

Регистрация: Mar 2012
Сообщений: 40
На данный момент, используя событие uploadCompleteData, имени нового файла нет, т.е.
result="CFFILE.ServerFile" этого не достаточно или может есть способ отловить этот result?
Либо тогда, как отдать из скрипта имя нового файла?

Старый 17.01.2013, 21:36
maxkar вне форума Посмотреть профиль Отправить личное сообщение для maxkar Найти все сообщения от maxkar
  № 4  
Ответить с цитированием
maxkar

Регистрация: Nov 2010
Сообщений: 497
Ну да, вполне вероятно, что нет...
Цитата:
или может есть способ отловить этот result?
Где отловить? На сервере - смотрите документацию по cloud fusion. Там, наверное, все есть. Может, и в переменную оно нормально записывается. А на клиенте оно никак магически не появится. Вы разбираетесь, что выполняется на сервере, что - на клиенте и что передается по http? Сервер может не создать ни одного файла, разложить файл по всем каталогам на диске или создать по одному файлу для каждого байта загруженного контента. И все это будет выглядеть одинаково для клиента и в протоколе (т.е. обычный http post и ответ на него). А вот что делает сервер, уже пишет программист.
Цитата:
Либо тогда, как отдать из скрипта имя нового файла?
Не в курсе. Это вам в серверные технологии, либо даже поискать что-нибудь более специализированное на coldfusion. Может, здесь кто-то и подскажет, но в связке со flash он вроде как очень редко используется.

Старый 18.01.2013, 12:17
Чеширский Кот вне форума Посмотреть профиль Отправить личное сообщение для Чеширский Кот Найти все сообщения от Чеширский Кот
  № 5  
Ответить с цитированием
Чеширский Кот

Регистрация: Mar 2012
Сообщений: 40
Разобрался. Можно сделать так:

Код AS3:
<cffile 
	action="upload"
	filefield="Filedata"
        destination="#ExpandPath('./Photo/')#"
	nameconflict="MakeUnique" />
 
        <cfdump var="#cffile#">
Тогда, используя событие uploadCompleteData, придет в event.text или в event.data имя нового файла
в виде:
Код AS3:
<tr>
	<td class="struct">SERVERFILE</td>
	<td>38.jpg</td>
</tr>
Теперь либо писать парсер, либо можно использовать возможности класса String.
Например, так:
Код AS3:
 
fileReferenceUpload.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA,onUploadCompleteData);
...
 
private function onUploadCompleteData(event:DataEvent):void 
{
	var str:String = event.text;
	var a:Array = str.split(">SERVERFILE</td>");
        ...
}
И дальше на подобии найти новое имя.

Создать новую тему Ответ Часовой пояс GMT +4, время: 15:49.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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