Parametre geçişi ile Actionscript birden fazla dosya yükleme, çalışmıyor

3 Cevap php

Öncelikle, ben flash / actionscript çok kötüyüm, bu benim ana programlama dili değildir.

Ben bu noktaya kadar benim için büyük kadar çalışıyor benim kendi dosya yükleme flaş uygulama oluşturduk. Bu dosyaları yüklemek için PHP kullanır ve kullanıcıya bir durum kutusunda görüntülenen alır bir durum iletisi gönderir.

Şimdi ben POST kullanarak PHP dosyası sonra Actionscript bir parametre geçmek ve HTML gereken bir durum haline çalıştırmak. Ben adobe başarı olmadan http://livedocs.adobe.com/flex/3/html/help.html?content=17_Networking_and_communications_7.html üzerinde var gibi bu kurmaya çalıştık.

İşte benim Actionscript kodu

import fl.controls.TextArea; 

//Set filters
var imageTypes:FileFilter = new FileFilter("Images (*.jpg, *.jpeg, *.gif, *.png)", "*.jpg; *.jpeg; *.gif; *.png");
var textTypes:FileFilter = new FileFilter("Documents (*.txt, *.rtf, *.pdf, *.doc)", "*.txt; *.rtf; *.pdf; *.doc");
var allTypes:Array = new Array(textTypes, imageTypes);
var fileRefList:FileReferenceList = new FileReferenceList();

//Add event listeners for its various fileRefList functions below
upload_buttn.addEventListener(MouseEvent.CLICK, browseBox);
fileRefList.addEventListener(Event.SELECT, selectHandler);


function browseBox(event:MouseEvent):void {
    fileRefList.browse(allTypes);
}

function selectHandler(event:Event):void {
    var phpRequest:URLRequest = new URLRequest("ajax/upload.ajax.php");
    var flashVars:URLVariables = objectToURLVariables(this.root.loaderInfo);
    phpRequest.method = URLRequestMethod.POST;
    phpRequest.data = flashVars;
    var file:FileReference;
    var files:FileReferenceList = FileReferenceList(event.target);
    var selectedFileArray:Array = files.fileList;
    var listener:Object = new Object();

    for (var i:uint = 0; i < selectedFileArray.length; i++) {
        file = FileReference(selectedFileArray[i]);

        try { 
            file.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, phpResponse);
            file.upload(phpRequest);
        }
        catch (error:Error) { 
            status_txt.text = file.name + " Was not uploaded correctly (" + error.message + ")"; 
        }
}
}

function phpResponse(event:DataEvent):void {    
    var file:FileReference = FileReference(event.target);
    status_txt.htmlText += event.data;
}

function objectToURLVariables(parameters:Object):URLVariables {
    var paramsToSend:URLVariables = new URLVariables();
    for(var i:String in parameters) {
        if(i!=null) {
            if(parameters[i] is Array) paramsToSend[i] = parameters[i];
            else paramsToSend[i] = parameters[i].toString();
        }
}

    return paramsToSend;
}

FlashVars değişken HTML dosyasından değerleri içermelidir biridir. Ben PHP dosyası program ve çıkış değişkenleri çalıştırmak zaman ama ben aşağıdaki alırsınız.

//Using this command on the PHP page
print_r($_POST);

//I get this for output
Array
(
    [Filename] => testfile.txt
    [Upload] => Submit Query
)

Onun neredeyse gibi parametreler yazılır üzerinden alıyorsanız ya da sadece hiç çalışmıyor.

Thanks for any help, Metropolis

3 Cevap

Tamam, ben ileri geri şeyler değişiyor tuttu ve önbellek süre temizlenir olmasaydı fark ..... şekilde sorunu çözdünüz. Ben önbelleğini temizleyin ve nedense çalışmaya başladı.

Ben geri önce vardı şekilde bir satır değiştirmeniz yaptım.

I changed
var flashVars:URLVariables = objectToURLVariables(this.root.loaderInfo);

To
var flashVars:URLVariables = objectToURLVariables(root.loaderInfo.parameters);

Bu soruna neden olduğu olumlu değil im. Ben sadece önbelleğe bütün zaman temizlemek için gerekli olabilir. Neyse, yardım çocuklar için teşekkürler.

Deneyin ...

print_r($_FILES);

Sanki benim yorumum dedi: başarıyla flashvars gelen Flash değişken alıyor musunuz?

Ben sadece her değişkenin doğrudan daha iyi bir şekilde başvuran, yerine objectToURLVariables işlevi, belki bir süre Flash yapılır ama değil. Eğer HTML sayfasından bu değişkenleri varsa, en azından anlamaya. Yani belki böyle bir şey yapın:

var myVar:String = LoaderInfo(this.root.loaderInfo).parameters.myVar;
var flashVars:URLVariables = objectToURLVariables(myVar);