gpt4 book ai didi

c# - 如何提高从网站下载文件的速度?

转载 作者:太空宇宙 更新时间:2023-11-03 16:12:43 24 4
gpt4 key购买 nike

我有一个 C# 控制台应用程序,它从网站下载文件。这是我的方法:

public bool DownloadFile(string fileUri, string filePath)
{
using (var response = _GetResponce(fileUri)) {
if (response.StatusCode != HttpStatusCode.OK) {
return false;
}
using (var responseStrm = response.GetResponseStream()) {
using (var fileStrm = new FileStream(filePath, FileMode.OpenOrCreate)) {
var buffer = new byte[CommonConstants.StreamBufferSize];
int bytesRead = responseStrm.Read(buffer, 0, CommonConstants.StreamBufferSize);
while(bytesRead > 0) {
fileStrm.Write(buffer, 0, bytesRead);
bytesRead = responseStrm.Read(buffer, 0, CommonConstants.StreamBufferSize);
}
}
}
}

private HttpWebResponse _GetResponce(string requestedUri, string method = "GET")
{
var request = (HttpWebRequest)WebRequest.Create(requestedUri);
request.Method = method;
request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13";
request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
request.Headers[HttpRequestHeader.AcceptLanguage] = "ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3";
request.Headers[HttpRequestHeader.AcceptEncoding] = "gzip,deflate";
request.Headers[HttpRequestHeader.AcceptCharset] = "windows-1251,utf-8;q=0.7,*;q=0.7";
return (HttpWebResponse)request.GetResponse();
}

我试图增加缓冲区大小,但无济于事。如果我添加线程,是否可以提高下载速度?

最佳答案

根据服务器的不同,下载包含多个片段的文件可能会加快速度。

为此你可以使用 request.AddRange并有不同的线程来下载相同的文件。请注意,当您将数据写入本地文件时,您必须从正确的偏移量开始。

这是大多数下载管理器所做的事情。

请注意,某些服务器不允许这样做。

关于c# - 如何提高从网站下载文件的速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16901849/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com