2010-04-07 3 views
0

우선 플래시/액션 스크립트가 좋지 않습니다. 제 주요 프로그래밍 언어가 아닙니다.액션 스크립트 다중 파일 업로드, 매개 변수 전달이 작동하지 않습니다.

나는 지금까지 나에게 큰 도움이 된 내 자신의 파일 업로드 플래시 앱을 만들었습니다. PHP를 사용하여 파일을 업로드하고 상태 상자에 표시되는 상태 메시지를 다시 사용자에게 보냅니다.

이제 Actionscript에 매개 변수를 전달하고 POST를 사용하여 PHP 파일에 HTML을 전달해야하는 상황에 처했습니다. 어도비가 성공하지 못한 채 http://livedocs.adobe.com/flex/3/html/help.html?content=17_Networking_and_communications_7.html에있는 것처럼 설정하려고했습니다.

여기가 flashVars 변수는 HTML 파일에서 값을 포함해야 한 내 액션 스크립트 코드

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; 
} 

입니다. 그러나 프로그램을 실행하고 PHP 파일에 변수를 출력 할 때마다 다음과 같은 메시지가 나타납니다.

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

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

매개 변수가 거의 쓰여지거나 전혀 작동하지 않는 것과 같습니다. 어떤 도움

감사합니다, 메트로폴리스

+0

flashvars에서 플래시 변수를 성공적으로 수신합니까? 어쩌면 액션 스크립트 코드 내부에 인쇄를 할 수 있을까요? – Abs

답변

0

좋아, 내가 앞뒤로 일을 계속 변화 캐시가 잠시에서 삭제되지 않은 것을 깨달았다 ..... 어떻게 든 문제를 해결했습니다. 캐시를 지우고 어떤 이유로 든 작동하기 시작했습니다.

한 줄을 이전과 같은 방식으로 변경했습니다.

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

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

아니요, 이것이 문제의 원인이 아니란 점은 분명하지 않습니다. 캐시 전체를 지울 필요가있을 수도 있습니다. 어쨌든, 당신 도움을 주셔서 감사합니다.

0

는 시도는 ...

print_r($_FILES); 
0

나는 내 댓글에 말했듯이 : 성공적으로 FlashVars에에서 Flash의 변수를 받습니까?

잠시 동안 플래시를 사용하지 않았지만 objectToURLVariables 함수 대신 각 변수를 직접 참조하는 것이 더 나은 방법입니다. 적어도 HTML 페이지의 변수가 있는지 알아 내야합니다. 그래서 어쩌면 같은 것을 할 :

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