C# 使用C下载URL内容配置excel文件#
我需要使用C#下载一个附加到URL的文件,我已经编写了以下代码:C# 使用C下载URL内容配置excel文件#,c#,httpwebrequest,content-disposition,C#,Httpwebrequest,Content Disposition,我需要使用C#下载一个附加到URL的文件,我已经编写了以下代码: var uri = new Uri("http://members.tsetmc.com/tsev2/excel/MarketWatchPlus.aspx?d=0"); var request = WebRequest.CreateHttp(uri); var response = request.GetResponse(); string dispositi
var uri = new Uri("http://members.tsetmc.com/tsev2/excel/MarketWatchPlus.aspx?d=0");
var request = WebRequest.CreateHttp(uri);
var response = request.GetResponse();
string disposition = response.Headers["Content-Disposition"];
string filename = disposition.Substring(disposition.IndexOf("filename=") + 9).Replace("\"", "");
using (var fs = new FileStream(filename.Replace("/", "-"), FileMode.Create, FileAccess.Write, FileShare.None))
{
response.GetResponseStream().CopyTo(fs);
}
但是保存在路径中的excel文件似乎已损坏我在尝试调用您的URL时被禁止返回。在我的例子中,我使用了一个不同的URL,它工作得很好
var request = WebRequest.CreateHttp("http://spreadsheetpage.com/downloads/xl/king-james-bible.xlsm");
var response = request.GetResponse();
using (var fs = new FileStream("king-james-bible.xlsm", FileMode.Create, FileAccess.Write, FileShare.None))
{
using (var stream = response.GetResponseStream())
{
stream.CopyTo(fs);
}
}
您检索的文件本身是否已损坏
根据新信息更新
好的,链接现在对我有效。您的问题是Excel文件是使用gzip编码发送的。下面的代码示例适用于您的URL
var request = WebRequest.CreateHttp("http://members.tsetmc.com/tsev2/excel/MarketWatchPlus.aspx?d=0");//"http://spreadsheetpage.com/downloads/xl/king-james-bible.xlsm");
var response = request.GetResponse();
string disposition = response.Headers["Content-Disposition"];
string filename = disposition.Substring(disposition.IndexOf("filename=") + 9).Replace("\"", "");
using (var fs = new FileStream(filename.Replace("/", "-"), FileMode.Create, FileAccess.Write, FileShare.None))
{
using (var stream = response.GetResponseStream())
{
using (GZipStream zipStream = new GZipStream(stream, CompressionMode.Decompress))
{
byte[] tempBytes = new byte[4096];
int i;
while ((i = zipStream.Read(tempBytes, 0, tempBytes.Length)) != 0)
{
fs.Write(tempBytes, 0, i);
}
}
}
}
我使用了这篇文章中的信息进行gzip解码:路径没有通向任何地方,我建议使用我更新的URL。请再看一看,我使用的URL不是直接指向excel文件的。它有一个附件,我从contentdispositionheader获取它的名称info@aminmohammadi我已经根据你的回答更新了答案input@PaulHieltjes我们是否必须在最后调用
response.Close()
?