2012-05-22 52 views
0

我想上傳一個文件到服務器。我這樣做:FileReference:沒有瀏覽的文章

var fileRef:FileReference = new FileReference(); 
fileRef.addEventListener(flash.events.Event.SELECT, selectHandler); 
fileRef.addEventListener(flash.events.Event.COMPLETE, completeHandler); 
fileRef.addEventListener(ProgressEvent.PROGRESS, normalprogressHandler); 
fileRef.browse(); 

function selectHandler(event:flash.events.Event):void 
{ 
    var params:URLVariables = new URLVariables(); 
    params.date = new Date(); 
    params.ssid = "94103-1394-2345"; 
    var request:URLRequest = new URLRequest("http://www.test.com/Uploads"); 
    request.method = URLRequestMethod.POST; 
    request.data = params; 

    fileRef.upload(request, "Custom1"); 
} 

function completeHandler(event:flash.events.Event):void 
{ 
    trace("uploaded"); 
} 

function normalprogressHandler(event:ProgressEvent):void 
{ 
    var percent:Number = Math.floor((event.bytesLoaded * 100)/ event.bytesTotal); 
    trace(percent+"%"); 
} 

上傳文件,但沒有browsig它可以嗎?我想自己決定,而不是上載的文件的用戶進行瀏覽第一

回答

4

你不能做到這一點與FileReference具有以下限制(reference):

  1. load()save() API可僅在響應用戶 交互(如點擊按鈕)時才被調用。
  2. 加載文件和保存文件的位置不會暴露給 ActionScript。
  3. 這些API是異步的(非阻塞的)。

很明顯,如果Flash播放器被任意地允許從本地文件系統上傳任何東西到遠程服務器,這將是一個主要的安全風險。

如果您嘗試從AIR應用程序上傳,您可以嘗試使用File類來做什麼。

+0

我同意此答案,但會附加:作爲已安裝的AIR應用程序,您有此能力。只是不像Flash在瀏覽器或獨立插件中運行。 –

+0

感謝塑料鱘魚;我想我應該在嘗試回答之前要求澄清。我已經用你的建議更新了答案。 –