apache-flex 如何在Flash Builder中将字节数组发送到服务器(Flex 4)

dfty9e19  于 2022-11-01  发布在  Apache
关注(0)|答案(5)|浏览(159)

我有一个视频文件在我的本地系统。我正在使用windows XP在我的系统。现在我想发送这个视频文件字节数组到服务器在Flash Builder(Flex 4)。我正在使用PHP在服务器端。
我该怎么做?请指导
谢谢

shstlldc

shstlldc1#

socket.writeBytes()将完成您需要的工作。

9cbw7uwe

9cbw7uwe2#

通过this link:

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

eufgjt7s3#

您需要将字节数组发送到PHP还是同时获取字节数组?
要发送字节数组,可以使用Zend_AMF:http://framework.zend.com/download/amf
它将处理所有的转换,在php中,你将通过一个变量获得字符串形式的bytearray(我使用的变量引用为:&$file,以便在调用方法时保存一些内存)
下面是一些代码片段,它可以帮助你:Sending ByteArray to Zend_Amf
要获取ByteArray,可以使用FileReference load()方法获取本地文件的所有字节数组。

mzmfm0qo

mzmfm0qo4#

您知道在Flex中创建视频的ByteArray实际上是将视频存储到内存中,对吗?任何类型的大型或未压缩视频都将使用大量的客户端内存,如果Flash达到其内存限制,这可能会导致错误。
我认为你的方法不对。我建议你把视频上传到服务器,然后服务器访问视频中的字节。如果你想把视频上传到服务器,看看这个教程,它展示了如何从Flex上传文件,以及如何使用PHP脚本获取和存储文件:http://livedocs.adobe.com/flex/3/html/17_Networking_and_communications_7.html#118972
如果您愿意的话,PHP可以从这里访问字节。

h79rfbju

h79rfbju5#

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

我使用了.mp3扩展名,因为我的字节数组是来自mp3文件的数据,但您可以将扩展名设置为字节数组所代表的任何类型的文件。

相关问题