首先,我在flash/actionscript中很糟糕,它不是我的主要編程語言。Actionscript多個文件上傳,參數傳遞不起作用
我已經創建了我自己的文件上傳Flash應用程序,一直工作到這一點,直到這一點。它使用PHP上傳文件併發回狀態消息,該消息在狀態框中顯示給用戶。
現在我遇到了一種情況,我需要HTML將參數傳遞給Actionscript,然後使用POST傳遞給PHP文件。我試圖設置它,就像adobe在http://livedocs.adobe.com/flex/3/html/help.html?content=17_Networking_and_communications_7.html上沒有成功一樣。
這裏是我的ActionScript代碼
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;
}
Flash變量變量是應該包含在HTML文件中的值之一。但是每當我運行程序並輸出PHP文件中的變量時,我都會收到以下內容。
//Using this command on the PHP page
print_r($_POST);
//I get this for output
Array
(
[Filename] => testfile.txt
[Upload] => Submit Query
)
它幾乎像參數越來越寫或根本沒有工作。
感謝您的幫助, 都市報
您是否成功從flashvars接收Flash中的變量?也許在你的Actionscript代碼裏面打印一下? – Abs 2010-04-07 19:59:55