Bild als ByteArray von Flash nach Php gesendent zum speichern

Denniz

Erfahrenes Mitglied
Hi Leute,

ich lade ein Bild in mein Flashfilm, das Bild wird anschließend per AS3 in ein ByteArray gewandelt und an ein PHP skript geschickt (klappt auch). Das Skipt soll nun die empfangenen Daten (das Bild im Binärformat) auf dem Server speichern.
Was ist zu tun?

PHP:
<?php
if(isset($GLOBALS['HTTP_RAW_POST_DATA'])){
  // echo 'TRUE'; - Ja, die Daten kommen korrekt an
  $data = $GLOBALS['HTTP_RAW_POST_DATA'];
  $name = $_GET['pic'];
 
  //..wie kriegt man das Bild jetzt gespeichert....
 
}else {
  echo 'No Data';
}
?>
Wahrscheinlich nicht so wichtig aber trotzdem hier die AS Klasse mit der saveJPG() Methode:
Code:
package {
 
  import flash.display.Bitmap;
  import flash.display.BitmapData;
  import flash.display.Loader;
  import flash.display.LoaderInfo;
  import flash.display.Sprite;
  import flash.events.Event;
  import flash.display.StageScaleMode;
  import flash.display.StageAlign;
  import flash.net.FileReference;
  import flash.net.URLRequest;
  import com.adobe.images.JPGEncoder;
  import flash.net.URLRequestHeader;
  import flash.utils.ByteArray;
  import flash.net.URLRequestMethod;
  import flash.net.navigateToURL;
 
  public class EncodeData extends Sprite {

    private var loader:Loader;
   
    public function EncodeData():void {
      if (stage) init();
      else addEventListener(Event.ADDED_TO_STAGE, init);
    }

    private function init(e:Event = null):void {
      removeEventListener(Event.ADDED_TO_STAGE, init);
      // entry point
      stage.align = StageAlign.TOP_LEFT;
      stage.scaleMode = StageScaleMode.NO_SCALE;
      loader = new Loader();
      loader.load(new URLRequest('baum.jpg'));
      loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
    }

    private function onComplete(e:Event):void {
      this.addChild(loader);
      saveJPG();
    }
   
    private function saveJPG():void {
      var bmd:BitmapData = new BitmapData(loader.width, loader.height);
      bmd.draw(loader);
      var encoder:JPGEncoder = new JPGEncoder(80);
      var byteArray:ByteArray = encoder.encode(bmd);

      //Mime Type
      var header:URLRequestHeader = new URLRequestHeader("Content-Type", "application/octet-stream");
     
      var saveJPG:URLRequest = new URLRequest("http://localhost/save.php?img=pic.jpg");
      saveJPG.requestHeaders.push(header);
      saveJPG.method = URLRequestMethod.POST;
      saveJPG.data = byteArray;
     
      navigateToURL(saveJPG, '_blank');
    }
  }
}
 
PHP:
if (isset($GLOBALS['HTTP_RAW_POST_DATA']))file_put_contents($_GET['img'],file_get_contents("php://input"));
else echo 'No Data';
 
Zurück