Форум 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)
-   -   Как принять данные от PHP в Actionscript 2.0 (http://www.flasher.ru/forum/showthread.php?t=134476)

Beckie 31.12.2009 17:42

Как принять данные от PHP в Actionscript 2.0
 
Ситуация следующая:

Происходит загрузка фото, фото переименовывается в уникальное название.

Мне нужно вернуть ссылку на это фото скрипту actionscript 2.0

Вот actionscript:

Код AS1/AS2:

import flash.net.FileReferenceList;
import flash.net.FileReference;
 
 
 
var fileTypes:Array = new Array();
var imageTypes:Object = new Object();
imageTypes.description = "Images (*.jpg, *.jpeg, *.gif, *.png)";
imageTypes.extension = "*.jpg; *.jpeg; *.gif; *.png";
fileTypes.push(imageTypes);
 
 
 
var fileListener:Object = new Object();
var btnListener:Object = new Object();
 
 
 
btnListener.click = function(eventObj:Object)
{
        var fileRef:FileReferenceList = new FileReferenceList();
        fileRef.addListener(fileListener);
        fileRef.browse(fileTypes);
}
 
uploadButton.addEventListener("click", btnListener);
 
 
 
 
 
fileListener.onCancel = function(file:FileReference):Void
{
    resultsTxtField.text += "File Upload Cancelled\n";
}
 
 
 
 
 
fileListener.onSelect = function(fileRefList:FileReferenceList):Void
{
        var list:Array = fileRefList.fileList;
        var item:FileReference;
 
        if(list.length > 5)
        {
        getURL("javascript: limit_reached();");
        return;
        }
 
 
    for(var i:Number = 0; i < list.length; i++) {
        item = list[i];
        trace("name: " + item.name);
        trace(item.addListener(this));
 
                resultsTxtField.text += "File Selected: " + item.name + "\n";
 
                if(!item.upload("http://localhost/upload.php"))
                {
                        resultsTxtField.text += "Upload dialog failed to open.\n";
                }               
    }
}
 
 
 
 
 
 
fileListener.onOpen = function(file:FileReference):Void
{
    resultsTxtField.text += "File Opened: " + file.name + "\n";
}
 
 
 
 
 
fileListener.onProgress = function(file:FileReference, bytesLoaded:Number, bytesTotal:Number):Void
{
        resultsTxtField.text += "Loading Progess: bytesLoaded: " + bytesLoaded + ", bytesTotal: " + bytesTotal + "\n";
        getURL("javascript: bytes_total=" + bytesTotal + "; bytes_loaded=" + bytesLoaded + "; file_name='" + file.name + "'; files_process();");
}
 
 
 
 
 
fileListener.onComplete = function(file:FileReference):Void
{
    resultsTxtField.text += "File Upload Complete: " + file.name + "\n";
        getURL("javascript: completed_file='" + file.name + " - uploaded!'; completed();");
}

Дописывать код видимо надо тут fileListener.onComplete

Я так понимаю, что можно принять ссылку на фото в виде строки, но как принять я не знаю.

Можете на примере показать, какая там функция принятия в переменную, строку от PHP.

Заранее спасибо. :victory:

Добавлено через 32 часа 27 минут
Код AS1/AS2:

var photos:LoadVars = new LoadVars();
photos.load("http://localhost/upload.php?gtfo=1");       
getURL("javascript:pnum=" + photos.uploaded + ";photo_num();");

В php:
PHP код:

if(isset($_GET['gtfo'])){echo "p_counter=9&uploaded=99";} 

pnum в firebug-e пишет undefined

Где я ошибаюсь?

Добавлено через 45 часов 46 минут
Ладно, решил проблему с помощью Сессий.

Но теперь осталась последняя задача. Запретить загрузку одинаковых фото.

Но увидеть простой пример работы load & sendandload в actionscripte не помешало бы.

Передавать названия файлов, привязывая их к флэш файлу будет как-то не правильным помоему. Какой другой способ?

Тем более, там ограничение на привязку, это же GET все таки помоему.

nOobCrafter 02.01.2010 20:27

что ыб принять данные от пхп почитайте про метод sendAndLoad():
Код AS1/AS2:

 var result_lv:LoadVars = new LoadVars();
  result_lv.onLoad = function(success:Boolean) {
    if (success) {
      result_ta.text = result_lv.welcomeMessage;
    } else {
      result_ta.text = "Ошибка соединения с сервером.";
    }
  };
  var send_lv:LoadVars = new LoadVars();
  send_lv.name = name_ti.text;
  send_lv.sendAndLoad("http://www.flash-mx.com/mm/greeting.cfm", result_lv, "POST");
};


Beckie 03.01.2010 20:15

Спасибо.

На стороне сервера у меня теперь так:

PHP код:

echo http_build_query($array); 

Я передаю ответ Javascript-у:

Код AS1/AS2:

 
loadvar_lv.onLoad = function(success:Boolean){
 
  getURL("javascript: filelinks='" + loadvar_lv + "'; completed();");
 
}


И получаю вот такой результат:

amp;4=images/t1/2010-01-03/c3aec088667038bef524791c826e08aef4b6dd60.jpg&
amp;3=images/t1/2010-01-03/dd9456b67dbb37b223b58f713a7ea534c06e3570.jpg&
amp;2=images/t1/2010-01-03/ea86f0e4ca0874490dd9999c4fa790d05d07aab8.jpg&
amp;1=images/t1/2010-01-03/2619b8d51cf1f95dc83dfb8ec82c03edd4364857.jpg&
0=images/t1/2010-01-03/ca48380dc928b55f6e7c33b6eeb11bf895ea58ac.jpg&
onLoad=[type Function]

Я так понимаю, что это эскейпнутая строка, как мне её превратить в массив?

При многом благодарен.


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

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