Как отправить дополнительную информацию при публикации видеоданных в ActionScript? - PullRequest
1 голос
/ 20 января 2011

Я сейчас сохраняю снимок следующим образом:

            vidBmpHolder.draw(main.media.videoLocal);
            var jpgEncoder:JPGEncoder = new JPGEncoder(85);
            var jpgStream:ByteArray = jpgEncoder.encode(vidBmpHolder);
            var loader:URLLoader = new URLLoader();
            var header:URLRequestHeader = new URLRequestHeader("Content-type", "application/octet-stream");
            var request:URLRequest = new URLRequest("http://domain.name/savesnapshot.php");
            request.requestHeaders.push(header);
            request.method = URLRequestMethod.POST;
            request.data = jpgStream;
            loader.load(request);

Но я хочу сохранить дополнительную информацию:

key=value

Есть ли обходной путь?

Ответы [ 2 ]

1 голос
/ 20 января 2011

Правильный способ - использовать URLVariables .

var variables : URLVariables = new URLVariables();
variables.foo= "foo";
variables.bar = "bar";
variables.jpgStream = Base64.encodeByteArray(jpgStream);
request.data = variables;

Обратите внимание на кодировку Base64 и выберите для этого подходящую библиотеку.Это должно устранить необходимость в заданном вами заголовке.

Тогда все должно выглядеть как

$foo = $_POST["foo"];
$bar = $_POST["bar"];
$jpgStream = base64_decode($_POST["jpgStream"]);

Возможно, вам придется сделать это как составной элемент.Найдите класс AS3 UploadPostHelper, содержащий пример.

0 голосов
/ 20 января 2011

Вы можете попытаться добавить пару значений ключа в URL, например:

new URLRequest("http://domain.name/savesnapshot.php?filename=image1.jpg");

, а затем на стороне php:

$file_name = $_GET['filename'];

РЕДАКТИРОВАТЬ: Добавлена ​​сторона сервераPHP скрипт.

<?php

$file_name = "image.jpg";

//here you access your file name passed in the url.
if( isset( $_GET["filename"] ) ) $file_name = $_GET["filename"];

$file = fopen($file_name, "w+") or die("Can't open file");

//here you access the bytearray data send form flash
$image_bytes = $GLOBALS["HTTP_RAW_POST_DATA"];

//create the image file
$fwrite = fwrite( $file, $image_bytes );

if ($fwrite === false) echo "Error writing to file: ".$file_name;

fclose($file);

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