从Flash保存图像,发送给PHP,并返回一个URL字符串到Flash [英] Save image from Flash, send it to PHP and return a URL string to Flash
问题描述
我使用这段代码将图像转换为BitmapData,并将JPG存储在ByteArray中。
import com.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);
//这里我们需要一些代码来发送bytearray,但是我缺乏足够的知识来做自己的
现在,我想要执行以下操作:
1.将ByteArray发送给PHP;
2. PHP必须在服务器上存储物理image_id.jpg;
3.那么PHP必须将图像的URL返回给Flash;
这可能吗?如何?
PHP的第一行可能是:
$ b $ pre $ if (isset($ GLOBALS [HTTP_RAW_POST_DATA]))
{
// get bytearray
$ jpg = $ GLOBALS [HTTP_RAW_POST_DATA];
//但我不知道如何将图像保存在磁盘上,以及如何返回// image的网址
}
谢谢!
as3部分:
import com.adobe.images.JPGEncoder;
import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLRequestHeader;
import flash.net.URLRequest;
$ b $ 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);
//设置请求头,方法和数据
var header:URLRequestHeader =新的URLRequestHeader(Content-type,application / octet-stream);
var loader:URLLoader = new URLLoader();
//发送jpg字节到saveJPG.php脚本
var myRequest:URLRequest = new URLRequest(saveJPG.php);
myRequest.requestHeaders.push(header);
myRequest.method = URLRequestMethod.POST;
myRequest.data = jpgStream;
loader.load(myRequest);
//火灾完成事件;
loader.addEventListener(Event.COMPLETE,saved);
函数保存(e:Event)
{
//跟踪图像文件名
trace(loader.data);
$ / pre $
$ bphp(saveJPG.php)部分:
if(isset($ GLOBALS [HTTP_RAW_POST_DATA])){
//图像文件名
$ fileName ='img.jpg';
//获取二进制流
$ im = $ GLOBALS [HTTP_RAW_POST_DATA];
//写出
$ fp = fopen($ fileName,'wb');
fwrite($ fp,$ im);
fclose($ fp);
//回显fileName;
echo $ fileName;
} else echo'result =发生错误。
I use this code to convert an image to a BitmapData and store a JPG in a ByteArray.
import com.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.';
这篇关于从Flash保存图像,发送给PHP,并返回一个URL字符串到Flash的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!