Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   FileReference + ColdFusion (http://www.flasher.ru/forum/showthread.php?t=192601)

Чеширский Кот 16.01.2013 19:43

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.
Вопрос как его получить обратно с сервера?

maxkar 17.01.2013 01:03

Отдавайте из скрипта имя нового файла. В клиенте в fileReference в событии uploadCompleteData получайте ответ и разбирайте его.

Чеширский Кот 17.01.2013 12:34

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

maxkar 17.01.2013 21:36

Ну да, вполне вероятно, что нет...
Цитата:

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

Либо тогда, как отдать из скрипта имя нового файла?
Не в курсе. Это вам в серверные технологии, либо даже поискать что-нибудь более специализированное на coldfusion. Может, здесь кто-то и подскажет, но в связке со flash он вроде как очень редко используется.

Чеширский Кот 18.01.2013 12:17

Разобрался. Можно сделать так:

Код 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, время: 04:45.

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