Как отправить байтовый массив на сервер во Flash Builder (Flex 4) - PullRequest
0 голосов
/ 24 марта 2011

В моей локальной системе есть видеофайл. Я использую Windows XP в своей системе.Теперь я хочу отправить этот байтовый массив видеофайлов на сервер во Flash Builder (Flex 4).Я использую PHP на стороне сервера.

Как я могу это сделать?Пожалуйста, руководство

Спасибо

Ответы [ 5 ]

1 голос
/ 24 марта 2011

Socket.writeBytes () будет делать то, что вам нужно.

0 голосов
/ 02 апреля 2011

AS3-код:

uploadURL = new URLRequest();
uploadURL.url = "upload.php?fileName=videotrack";
uploadURL.contentType = 'application/octet-stream';
uploadURL.method = URLRequestMethod.POST;
uploadURL.data = rawBytes;
urlLoader = new URLLoader();
urlLoader.addEventListener(Event.COMPLETE, completeHandler);
urlLoader.load(uploadURL);

rawBytes - это байтовый массив, который вы хотите загрузить на сервер.

PHP-код

$fileName = $_REQUEST['fileName'] . ".mp3";
$fp = fopen( $fileName, 'wb' );
fwrite( $fp, $GLOBALS[ 'HTTP_RAW_POST_DATA' ] );
fclose( $fp );

I 'Мы использовали расширение .mp3, потому что моим байтовым массивом были данные из mp3-файла, но вы можете установить расширение для любого типа файла, который представляет ваш байтовый массив.

0 голосов
/ 24 марта 2011

Вы знаете, что создание ByteArray для видео во Flex буквально хранит это видео в памяти, верно? Любой вид большого или несжатого видео будет использовать огромный объем памяти на стороне клиента, что может привести к ошибкам, если Flash достигнет предела памяти.

Я не думаю, что вы делаете это правильно. Вместо этого я рекомендую просто загрузить видео на сервер, на котором сервер, а затем получить доступ к байтам внутри него. Если вы хотите загрузить видео на сервер, посмотрите этот учебник, который показывает, как загрузить файл из Flex и скрипт PHP для получения и сохранения файла: http://livedocs.adobe.com/flex/3/html/17_Networking_and_communications_7.html#118972

С этого момента PHP может получить доступ к байтам, если вы склонны.

0 голосов
/ 24 марта 2011

Вам нужно просто отправить байтовый массив в PHP или также получить байтовый массив?

Для отправки байтового массива вы можете использовать Zend_AMF: http://framework.zend.com/download/amf

Он будет обрабатывать все преобразования, и в php вы получите байтовый массив в виде строки через переменную (я использую ссылку на переменную как: &$file, чтобы сэкономить память при вызове метода)

Вот фрагмент кода, который может вам помочь: Отправка ByteArray в Zend_Amf

Для получения ByteArray вы можете использовать метод FileReference load (), чтобы получить весь байтовый массив локального файла.

0 голосов
/ 24 марта 2011

Через по этой ссылке: .

// serialization
var serializedSound:ByteArray;

serializedSound = serializeSound(sound);
serializedSound.position = 0;

// unserialization
var newSound:Sound = new Sound();
newSound.addEventListener(SampleDataEvent.SAMPLE_DATA, deserialize);
newSound.play();

function serializeSound(sound:Sound):ByteArray
{
var result:ByteArray = new ByteArray();

while( sound.extract(result, 8192) ){ 
result.position = result.length; 
}

return result;
}

function deserialize(e:SampleDataEvent):void
{
for ( var c:int=0; c<8192; c++ ) {
if(serializedSound.bytesAvailable < 2) break;
e.data.writeFloat(serializedSound.readFloat());
e.data.writeFloat(serializedSound.readFloat());
}
}
...