【问题标题】:how to send byte array to server in flash builder (Flex 4)如何在 Flash Builder (Flex 4) 中将字节数组发送到服务器
【发布时间】:2011-03-24 06:18:25
【问题描述】:

我的本​​地系统中有一个视频文件。我在我的系统中使用的是 Windows XP。现在我想将此视频文件字节数组发送到 Flash Builder (Flex 4) 中的服务器。我在服务器端使用 PHP。

我该怎么做?请指导

谢谢

【问题讨论】:

    标签: apache-flex flex4 air flash-builder


    【解决方案1】:

    Socket.writeBytes() 会做你需要的。

    【讨论】:

      【解决方案2】:

      通过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());
      }
      }
      

      【讨论】:

        【解决方案3】:

        您需要将字节数组发送到 PHP 还是同时获取字节数组?

        你可以使用 Zend_AMF 发送字节数组: http://framework.zend.com/download/amf

        它将处理所有的转换,在 php 中,您将通过变量将字节数组作为字符串获取(我使用变量引用为:&amp;$file 以在调用方法时节省一些内存)

        这里有一些可以帮助你的代码 sn-p: Sending ByteArray to Zend_Amf

        为了获取字节数组,您可以使用FileReference load() 方法获取本地文件的所有字节数组。

        【讨论】:

        • 我想将本地系统视频文件写入服务器。我应该在 flex 4 中做什么,这样我才能做到这一点。
        • 我这样做如下: {byteArray} 但是当我使用上面的代码时,flashbuilder 编辑器显示警告“数据绑定将无法检测到 byteArray 的分配”,我做错了。请指导。谢谢
        【解决方案4】:

        您知道在 Flex 中创建视频的 ByteArray 就是将该视频存储到内存中,对吗?任何类型的大型或未压缩视频都会使用大量客户端内存,如果 Flash 达到其内存限制,可能会导致错误。

        我不认为你这样做是正确的。我建议你做的只是将视频上传到服务器,然后服务器访问其中的字节。如果您想将视频上传到服务器,请查看此处的本教程,该教程展示了如何从 Flex 上传文件以及获取和存储文件的 PHP 脚本:http://livedocs.adobe.com/flex/3/html/17_Networking_and_communications_7.html#118972

        如果您愿意,PHP 可以从这里访问字节。

        【讨论】:

          【解决方案5】:

          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 文件的数据,但您可以将扩展名设置为字节数组所代表的任何类型的文件。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-05-14
            • 2023-03-21
            • 2011-06-13
            • 2012-05-14
            • 1970-01-01
            相关资源
            最近更新 更多