Сохраните изображение из Flash, отправьте его в PHP и верните строку URL во Flash - PullRequest
2 голосов
/ 20 мая 2011

Я использую этот код для преобразования изображения в 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);

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

Теперь я хочу сделать следующее: 1. отправить ByteArray на PHP; 2. PHP должен хранить физический image_id.jpg на сервере; 3. затем PHP должен вернуть URL изображения во Flash;

Возможно ли это? Как?

Первые строки PHP могут быть:

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
}

Спасибо!

1 Ответ

3 голосов
/ 22 мая 2011

часть as3:

<code>
import com.adobe.images.JPGEncoder;
import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLRequestHeader;
import flash.net.URLRequest;</p>

<p>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);</p>

<p>//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);
}

часть php (saveJPG.php):


if ( isset ( $GLOBALS["HTTP_RAW_POST_DATA"] )) {</p>

<pre><code>//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 = Произошла ошибка.';

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...