2014-06-10 72 views
0

看過很多類似,但沒有解決辦法:我試圖做一些事情(我覺得)很簡單,AS3 POST PNG到PHP

採取從畫廊或相機拍照 - 和POST這一個網址。沒有保存/返回到應用程序。 PNG僅供顯示中的網頁使用,並且用戶向前移動。

 public function postPicture():void { 

     PNGEncoder2.level = CompressionLevel.FAST; 

     var encoder : PNGEncoder2 = PNGEncoder2.encodeAsync(_bitmapData); 
     encoder.targetFPS = 12;  

     encoder.addEventListener(Event.COMPLETE, function (e):void { 
      var png : ByteArray = encoder.png; 
      var header:URLRequestHeader = new URLRequestHeader("Content-type", "application/octet-stream"); 
      var jpgURLRequest:URLRequest = new URLRequest("https://myurl.com/mypage"); 
      jpgURLRequest.requestHeaders.push(header); 
      jpgURLRequest.method = URLRequestMethod.POST; 
      jpgURLRequest.data = png; 
      navigateToURL(jpgURLRequest, "_blank"); 
     }); 
    } 

另外要注意,我們在URL的末尾得到一些奇怪的字符:C9%90NG

的直覺是,我解碼,然後不發送,即這些字符之前正確編碼一些原始圖像信息的一部分。

當我測試從另一個圖像的鉻POST擴展,服務器端的東西工作正常,所以猜測與AS3的問題。

  • 基本上它的工作原理是當我使用chrome瀏覽> my.png並將其張貼在頁面上時。我是否錯過了AS3 png編碼器?即如何將該bmp數據轉換爲「文件」而不是字節數組。

三江源

+0

這可能有幫助:http://www.zedia.net/2010/sending-bytearray-image-and-variables-to-server-side-script-as-post-data-in-as3/ 請注意,內容類型設置爲'multipart/form-data' – Marcela

回答

0

您需要使用多載。這是一個普遍的情況,爲此制定了明確的標準。您可以自己實施,但需要一些時間和精力。

我以前使用是尤金Zatepyakin,一個最好的Flash大師的在那裏:)

這是某種舊的,但做這項工作非常好,提供的Multipart URLLoader Class。你可以添加變量,文件,你想要的任何內容到你的加載器,只需提交它。有一些事情的PHP方面的例子,所以你可以理解發生了什麼。

+0

這部分工作。我們得到了文件POST,但應用程序返回。它攜帶了頁面回覆(包含加載id),所以我們只是在同一個函數中創建了第二個URLloader,並通過URL傳遞了通過URL回收的內容。迂迴的做法,但工作 – mdk