2012-02-26 77 views

回答

1

最簡單的方法是將任何數據作爲二進制發送到發佈請求中。然而,上傳是另一回事,因爲它也需要服務器端的IO。

目前尚不清楚您的服務器端選項和/或需求是什麼。它是否必須模仿HTML表單行爲(即,它是否必須發送多部分表單數據頭?),還是隻能使用content-type:application/octet-stream?這是不同的,因爲首先只能通過FileReference完成,或者需要你修補服務器以發送策略文件來響應特定請求+使用套接字自己實現HTTP協議。雖然發送純二進制數據(第二種選擇)更容易實現並且限制更少,但是,您需要管理服務器上所需的IO,以便自行保存上載的數據。

請注意,自動測試FileReference行爲是不可能的,因爲它需要用戶點擊,並且它只會發送數據以響應點擊事件。

+0

謝謝你的答覆。 我找到了一種方法來做到這一點。 – 2012-02-26 14:57:26

+0

首先我根據這個將嵌入圖像轉換爲字節數組, [convert-embed-image-to-bytearray](http://flexbuilderblog.wordpress.com/2010/01/25/convert-embed-image-to- byteray /) 然後,我發送該字節數組到服務器,根據這個(修改), [upload-bitmapdata-snapshot-to-server-in-as3](http://www.quietless.com/ kitchen/upload-bitmapdata-snapshot-to-server-in-as3 /) 並測量它將花費的時間。 – 2012-02-26 15:14:10

0

嗨,我發現最好的辦法做到這一點與圖像。 首先,我創建了一個字節數組,

private var _byteArray:ByteArray = new ByteArray(); 
for(var i:int = 0; i < 200 * 1024;i++) 
{ 
    _byteArray.writeByte(1); 
} 

併發送200KB ByteArray的服務器使用的URLLoader和URLRequest

uploadURL = new URLRequest(); 
uploadURL.url = "upload.php"; 
uploadURL.contentType = 'application/octet-stream'; 
uploadURL.method = URLRequestMethod.POST; 
uploadURL.data = _byteArray; 
urlLoader = new URLLoader(); 
urlLoader.addEventListener(Event.COMPLETE, completeHandler); 
urlLoader.load(uploadURL); 

protected function completeHandler(event:Event):void 
{ 
    trace("Upload Complete"); 
} 
相關問題