【发布时间】: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