如何使用 C# 从 URL 下载文件
How to download a file from a URL using c#
我想从以下地址下载一个 .xlsx 文件。
http://members.tsetmc.com/tsev2/excel/MarketWatchPlus.aspx?d=1396-08-08
点击 link 浏览器会自动下载一个文件。我尝试通过以下代码下载文件:
using (var client = new WebClient())
{
client.DownloadFile("http://members.tsetmc.com/tsev2/excel/MarketWatchPlus.aspx?d=1396-08-08", @"D:\Archive96-08-08.xlsx");
}
但是会下载一个奇怪的文件,和浏览器第一步下载的文件不一样。
我也试过了:
System.Diagnostics.Process.Start(
"http://members.tsetmc.com/tsev2/excel/MarketWatchPlus.aspx?d=0");
但是这段代码有两个缺点:
1- 打开不需要的浏览器。
2- 我无法确定下载文件的任何路径或文件名。
我想获得与点击上述 link 地址将要下载的文件完全相同的文件。
如何下载我需要的文件?
Lasse Vågsæther Karlsen 是正确的。您的浏览器足够智能,可以解压缩文件,因为响应包含 header:
content-encoding:"gzip"
您可以使用此代码下载并解压文件(根据您的文件名、路径等进行相应调整)
void Main()
{
using (var client = new WebClient())
{
client.Headers.Add("accept", "*/*");
byte[] filedata = client.DownloadData("http://members.tsetmc.com/tsev2/excel/MarketWatchPlus.aspx?d=1396-08-08");
using (MemoryStream ms = new MemoryStream(filedata))
{
using (FileStream decompressedFileStream = File.Create("c:\deleteme\test.xlsx"))
{
using (GZipStream decompressionStream = new GZipStream(ms, CompressionMode.Decompress))
{
decompressionStream.CopyTo(decompressedFileStream);
}
}
}
}
}
我想从以下地址下载一个 .xlsx 文件。 http://members.tsetmc.com/tsev2/excel/MarketWatchPlus.aspx?d=1396-08-08
点击 link 浏览器会自动下载一个文件。我尝试通过以下代码下载文件:
using (var client = new WebClient())
{
client.DownloadFile("http://members.tsetmc.com/tsev2/excel/MarketWatchPlus.aspx?d=1396-08-08", @"D:\Archive96-08-08.xlsx");
}
但是会下载一个奇怪的文件,和浏览器第一步下载的文件不一样。
我也试过了:
System.Diagnostics.Process.Start(
"http://members.tsetmc.com/tsev2/excel/MarketWatchPlus.aspx?d=0");
但是这段代码有两个缺点:
1- 打开不需要的浏览器。
2- 我无法确定下载文件的任何路径或文件名。
我想获得与点击上述 link 地址将要下载的文件完全相同的文件。 如何下载我需要的文件?
Lasse Vågsæther Karlsen 是正确的。您的浏览器足够智能,可以解压缩文件,因为响应包含 header:
content-encoding:"gzip"
您可以使用此代码下载并解压文件(根据您的文件名、路径等进行相应调整)
void Main()
{
using (var client = new WebClient())
{
client.Headers.Add("accept", "*/*");
byte[] filedata = client.DownloadData("http://members.tsetmc.com/tsev2/excel/MarketWatchPlus.aspx?d=1396-08-08");
using (MemoryStream ms = new MemoryStream(filedata))
{
using (FileStream decompressedFileStream = File.Create("c:\deleteme\test.xlsx"))
{
using (GZipStream decompressionStream = new GZipStream(ms, CompressionMode.Decompress))
{
decompressionStream.CopyTo(decompressedFileStream);
}
}
}
}
}