C# 如何在C中通过HTTP发送和接收大型文件#
我正在开发一个HTTP服务器/客户端,目前我可以通过它发送小文件,如.txt文件和其他不需要太多内存的易于读取的文件。但是,当我想发送一个较大的文件时,比如.exe或大型.pdf文件,我会收到内存错误。这是因为在尝试发送或接收文件之前,我必须指定byte[]缓冲区的大小。在从流中读取缓冲区时,是否有方法获取缓冲区的大小 我想这样做:C# 如何在C中通过HTTP发送和接收大型文件#,c#,http,getresponse,C#,Http,Getresponse,我正在开发一个HTTP服务器/客户端,目前我可以通过它发送小文件,如.txt文件和其他不需要太多内存的易于读取的文件。但是,当我想发送一个较大的文件时,比如.exe或大型.pdf文件,我会收到内存错误。这是因为在尝试发送或接收文件之前,我必须指定byte[]缓冲区的大小。在从流中读取缓冲区时,是否有方法获取缓冲区的大小 我想这样做: //Create the stream. private Stream dataStream = response.GetResponseStream(); //
//Create the stream.
private Stream dataStream = response.GetResponseStream();
//read bytes from stream into buffer.
byte[] byteArray = new byte[Convert.ToInt32(dataStream.Length)];
dataStream.read(byteArray,0,byteArray.Length);
但是,调用“dataStream.Length”时会抛出错误:
ExceptionError: This stream does not support seek operations.
有人能给我一些建议,告诉我如何从流中获取字节[]的长度吗
谢谢,网络层无法知道响应流的长度 然而,服务器应该告诉你它有多长;查看
内容长度响应标题。
如果该标题缺失或不正确,则表示您运气不佳;您需要一直读取,直到数据用完。您可以使用流的CopyTo
方法
您也可以直接写入文件
var fs = File.Create("....");
dataStream.CopyTo(fs);
var fs = File.Create("....");
dataStream.CopyTo(fs);