2011-05-25 170 views
0

我開發了一個應用程序,允許用戶在畫布上繪製簡單的圖像。 movieclip(畫布)的名稱是canvas_mc。使用POST方法將數據從Flash發送到PHP

我需要使用php在服務器上保存此圖。我必須將movieclip(canvas_mc)轉換爲png和jpeg並保存。我已經成功地保存它使用一些可用的類本地驅動器上的

http://www.flashandmath.com/advanced/smoothdraw/index.html

我如何使用PHP將其保存在服務器上。我被要求使用post方法。如果可能的話,給我的代碼,因爲我剛剛從設計編程:-)

回答

2

不知道如何將您的圖像轉換爲數據等,但這裏有一個類我可以用來傳輸數據到PHP腳本(可以從那裏將數據插入到數據庫中)。

package 
{ 
    import flash.net.URLRequest; 
    import flash.net.URLLoader; 
    import flash.net.URLVariables; 
    import flash.net.URLRequestMethod; 
    import flash.events.Event; 

    /** 
    * @author Marty Wallace 
    * @version 1.00 
    */ 
    public class PHPData extends Object 
    { 
     /** 
     * Sends data to a PHP script 
     * @param script A URL to the PHP script 
     */ 
     public function send(script:String, vars:URLVariables):void 
     { 
      var req:URLRequest = new URLRequest(script); 

      req.data = vars; 
      req.method = URLRequestMethod.POST; 

      var loader:URLLoader = new URLLoader(); 
      loader.load(req); 

      // listeners 
      loader.addEventListener(Event.COMPLETE, _complete); 
     } 

     /** 
     * Called when a response has been received from a PHP script 
     * @param e Event.COMPLETE 
     */ 
     private function _complete(e:Event):void 
     { 
      var vars:URLVariables = new URLVariables(e.target.data); 

      var i:String; 
      for(i in vars) 
      { 
       trace(i + ": " + vars[i]); 
      } 

      e.target.removeEventListener(Event.COMPLETE, _complete); 
     } 
    } 
} 

用途:

var php:PHPData = new PHPData(); 
var vars:URLVariables = new URLVariables(); 

vars.imagedata = your_image_data; 

php.send("your_php_script.php", vars); 
+0

經過一番搜索,我可以在我的影片剪輯轉換成ByteArray並將其發送我明白了。我發現了用於轉換var buffer的代碼:ByteArray = new ByteArray(); buffer.writeObject(MOVIE_CLIP_HERE); buffer.position = 0; buffer.writeBytes(...);我在這裏找到了。 http://stackoverflow.com/questions/1482053/as3-export-a-movieclip-or-canves-to-swf但什麼應該是writeBytes函數的參數。文檔說它是'ByteArray對象'。但我只是創建它我明白了。我想,然後使用該類,並把vars.imagedata =緩衝區;工作就會完成。 – 2011-05-25 06:43:43

+0

很酷,如果是這種情況,那麼你應該可以使用上面的代碼將它發送給PHP。 – Marty 2011-05-25 06:45:36

+0

我無法弄清楚什麼應該是var緩衝區中的writeBytes函數的第一個參數:ByteArray = new ByteArray(); buffer.writeObject(MOVIE_CLIP_HERE); buffer.position = 0; buffer.writeBytes(...); – 2011-05-25 06:50:47

相關問題