【问题标题】:Reading audio file from socket inputstream in Windows Phone从 Windows Phone 中的套接字输入流中读取音频文件
【发布时间】:2014-02-08 17:14:31
【问题描述】:

我正在尝试让我的计算机将音乐文件发送到我的应用程序 (Windows Phone 8)。我使用套接字在我的计算机上显示一个 html 文件,我可以在其中选择一个文件并上传它:

Upload music file:<br />
<input type="file" id="musicfile"/><br />
<input type="button" onclick="sendFile()" value="send"/>
<script type="text/javascript">
  function sendFile () {
    // get file
    var fileInput = document.getElementById('musicfile');
    var files = fileInput.files;

    // make request
    var xmlhttp = new XMLHttpRequest();

    // response
    xmlhttp.onreadystatechange = function() {
      if (xmlhttp.readyState==4 && xmlhttp.status==200) {
        alert("uploaded file");
      }
    }

    // send data
    xmlhttp.open("POST","upload",true);
    xmlhttp.send(files[0]);
  }
</script>

我是这样读取文件数据的:

// handle request
private async void HandleRequest(StreamSocket socket)
{
    //Initialize IO classes
    DataReader reader = new DataReader(socket.InputStream);
    reader.InputStreamOptions = InputStreamOptions.Partial;

    // read request
    var stringHeader = await reader.LoadAsync(4);
    if (stringHeader == 0)
    {
        // disconnected
        return;
    }

    // get length
    int length = reader.ReadInt32();

    // initiate data
    byte[] data = new byte[length];

    // load and read data
    uint bytes = await reader.LoadAsync((uint)length);
    reader.ReadBytes(data);
}

我在尝试创建 byte[] 数据时收到 OutOfMemoryException。长度 = 1215263604 并不令人惊讶。

我想知道它怎么会这么大,音乐文件是 7.68MB。 请求的内容类型为“audio/mp3”。

【问题讨论】:

    标签: c# javascript sockets windows-phone


    【解决方案1】:

    为什么不使用 Content-Length 标头来获取 wp 应用程序中的大小?如果它返回不正确的值,则在服务器中进行更改以使标头值可用。

    OutOfMemoryException 错误不会出现。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-11
      • 2020-10-20
      相关资源
      最近更新 更多