2011-05-25 169 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

相关问题