2009-05-26 138 views
0

我想通過Actionscript 3中的URLLoader上傳文件,我知道這是可能的,至少根據文檔,但我無法確定它。因此,如果有人在我想知道我要離開的情況之前做過這些事情,具體來說,我不確定URLRequest及其數據屬性。我知道我的文件數據應該去那裏,但我不確定如何。使用URLLoader在Actionscript 3中上傳包含其他變量的文件?

下面的代碼的一個非常基本的形式,我的工作:

//=============================================== 
public function sendRequest():void { 
//=============================================== 

    var newFile:FileReference(); //this eventually gets data loaded to it before I make request 
    var sendForm:URLLoader = new URLLoader(); 
    var urlString:String = "/proposal_request/?"; 
    var header:URLRequestHeader = new URLRequestHeader("Content-Disposition: attache[attachment]; filename=" + newFile.name); 
    ... 

    ... 
    urlString += "variable=" + instance_name.text; 
    urlString += "another_variable=" + another_instance_name.text; 
    ... 

    ... 
    var requester:URLRequest = new URLRequest(urlString); 
    requester.contentType = "multipart/form-data"; 
    requester.method = URLRequestMethod.POST; 
    requester.requestHeaders.push(header); 
    requester.data = newFile; //here's where I'm most confused, should this be encoded? 
    ... 

    ... 
    sendForm.addEventListener(HTTPStatusEvent.HTTP_STATUS, responseStatus); 
    sendForm.load(requester); 

} 

回答

2

你總是可以走那條路 - 但你真的不必。

FileReference class爲您提供了一種上傳文件的簡單方法:方法upload()

public function upload(request:URLRequest, uploadDataFieldName:String = "Filedata", testUpload:Boolean = false):void 

FileReference對象後有一些數據,只需調用上傳傳遞一個的URLRequest和可選的數據字段字符串,服務器一些額外的信息,以及布爾值,來激活或取消測試上傳:如果您的文件超過10KB,Flash Player會在上傳真實文件之前嘗試發送一個0字節的文件作爲連接測試。

之後,你可以只是聽進步完整uploadDataComplete事件跟蹤上傳的。

Adobe AS3 Reference on FileReference.upload()

+0

男人我一直在那一頁上,我從來沒有想過你可以通過URLRequest上傳,不知道爲什麼,它只是有道理。我想我只是檢查了太多東西。謝謝Kishi。 – 2009-05-27 02:43:42

0

以上是好的,如果你不使用的FileReference瀏覽後更改文件數據。假設您在上傳之前調整圖像大小或裁剪圖像,您將如何使用FileReference.upload進行上傳。

URLLoader可用於向服務器發送二進制數據,但在這種情況下,上傳進度不可用,因爲ProgressEvent僅在圖像完全上傳後觸發。

有沒有辦法顯示大小調整圖像的中間圖像上傳進度,類似於FileReference組件顯示的進度。

+0

一個問題的答案裏面的好問題,老兄 – 2015-09-28 20:45:48

相關問題