我需要使用C#下载附加到URL的文件,并且我已经编写了这段代码:
Open recent
但是保存在路径中的excel文件似乎已损坏
答案 0 :(得分:0)
尝试调用您的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解码:How do you download and extract a gzipped file with C#?