开发者

Save image from Flash, send it to PHP and return a URL string to Flash

I use this code to convert an image to a BitmapData and store a JPG in a ByteArray.

import co开发者_开发知识库m.adobe.images.JPGEncoder;

var jpgSource:BitmapData = new BitmapData (img_mc.width, img_mc.height);
jpgSource.draw(img_mc);

var jpgEncoder:JPGEncoder = new JPGEncoder(85);
var jpgStream:ByteArray = jpgEncoder.encode(jpgSource);

// here we need some code to send the bytearray but I lack enough knowledge to do it by myself

Now, I want to do the following: 1. send the ByteArray to PHP; 2. PHP must store a physical image_id.jpg on server; 3. then PHP must return the URL of the image to Flash;

Is this possible? How?

The first lines of PHP could be:

if (isset($GLOBALS["HTTP_RAW_POST_DATA"]))
{
    // get bytearray
    $jpg = $GLOBALS["HTTP_RAW_POST_DATA"];

    // but I don't know how to save the image on disk and how to return the URL of the //image
}

Thanks!


the as3 part:


import com.adobe.images.JPGEncoder;
import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLRequestHeader;
import flash.net.URLRequest;

var jpgSource:BitmapData = new BitmapData(img_mc.width,img_mc.height); jpgSource.draw(img_mc); var jpgEncoder:JPGEncoder = new JPGEncoder(85); var jpgStream:ByteArray = jpgEncoder.encode(jpgSource);

//set the request's header,method and data var header:URLRequestHeader = new URLRequestHeader("Content-type","application/octet-stream"); var loader:URLLoader = new URLLoader(); //sends jpg bytes to saveJPG.php script var myRequest:URLRequest = new URLRequest("saveJPG.php"); myRequest.requestHeaders.push(header); myRequest.method = URLRequestMethod.POST; myRequest.data = jpgStream; loader.load(myRequest); //fire complete event; loader.addEventListener(Event.COMPLETE,saved); function saved(e:Event) { //trace the image file name trace(loader.data); }

the php (saveJPG.php) part:


if ( isset ( $GLOBALS["HTTP_RAW_POST_DATA"] )) {

//the image file name   
$fileName = 'img.jpg';

// get the binary stream
$im = $GLOBALS["HTTP_RAW_POST_DATA"];

//write it
$fp = fopen($fileName, 'wb');
fwrite($fp, $im);
fclose($fp);

//echo the fileName;
echo $fileName;

} else echo 'result=An error occured.';

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜