得到一个responseLength一HttpWebRequest上从另一个webfile流入上当来源没有实现ContentLength?
-
16-09-2019 - |
题
背景 -我想流现有的网页为一个单独的网络应用程序,使用HttpWebRequest/HttpWebResponse。一个问题,我引人注目的是,我试图设置的文件上载请求的内容的长度使用的文件下载的内容的长度,但是这一问题似乎是当源网页,在网络服务器为其HttpWebResponse不提供的内容的长度。
HttpWebRequest downloadRequest = WebRequest.Create(new Uri("downloaduri")) as HttpWebRequest;
using (HttpWebResponse downloadResponse = downloadRequest.GetResponse() as HttpWebResponse)
{
var uploadRequest = (HttpWebRequest) WebRequest.Create(new Uri("uripath"));
uploadRequest.Method = "POST";
uploadRequest.ContentLength = downloadResponse.ContentLength; // ####
的问题:我怎么可能更新该方法,以迎合对这种情况下(当时的下载的响应并没有内容的长度设置)。它会以某种方式使用流,也许?任何代码样本,将不胜感激。
解决方案
如果你快乐下载的响应从其他网络服务器完全,那将确实可以使生活更加容易。只是反复写入流为你取从第一个网络服务器,那么你知道的长度,设置第二个请求你可以写的数据在很容易(尤其是因为 MemoryStream
有一个 WriteTo
方法编写其内容为另一个流)。
这种方法的缺点是,你采取了大量的存储器,如果它是一个大型的文件。是的,很可能是一个问题,在您的情况?替代品包括:
- 写一个文件,而不是使用
MemoryStream
.你只需要清理的文件之后,当然-你基本上使用的文件系统作为更大的记忆:) - 用一块传输编码"读一块,编写一块";此 可 是繁琐,获得正确的-这肯定不是我之前完成。
不隶属于 StackOverflow