我对下面的代码块感到困惑,因为为什么它会下载网页的内容,而不是文件本身。我创建了一个虚拟文件,里面有一些文本,然后我下载了它,但当我打开下载文件时,我看不到我写的任何文本,但它有奇怪的web语言标签。
private bool DownloadCSVfile()
{
bool downloadOk = false;
WebClient client = null;
try
{
client = new WebClient();
client.Credentials = CredentialCache.DefaultCredentials;
client.DownloadFile(myURL, CSVfile);
if (File.Exists(CSVfile))
downloadOk = true;
else
downloadOk = false;
}
catch (Exception error)
{
downloadOk = false;
string err = error.Message;
}
//release resource
if (client != null)
{
client.Dispose();
client = null;
}
//
if (downloadOk == true)
{
return true;
}
else
{
return false;
}
}发布于 2009-06-29 02:50:29
我猜myURL是以"/“结尾,而不是".csv”,对吗?您认为myURL + CSVFile会包含文件的完整路径吗?它不会。(See doc) URL必须是文件本身的路径。你可以拥有这样的东西:
client.DownloadFile(@"./file.csv", "filename.txt");如果我没有说对,请告诉我URL中有什么,以及下载的文件中前几个标签中有哪些。
发布于 2009-06-29 02:51:18
这个站点需要登录吗?它真的在重定向你吗?
在此之前,我就有过一个需要我伪造浏览动作(并存储cookie等)才能允许我下载所需文件的浏览器。
发布于 2009-06-29 02:57:05
对不起,“网页”在“网页内容”中是什么意思?这里只涉及到一个网址,就是myURL。myURL是否直接指向CSV文件?如果是这样,那么您收到的内容实际上是什么样子的?
另外:
if (File.Exists(CSVfile))
downloadOk = true;
else
downloadOk = false;...is很尴尬。请写下:
downloadOk = File.Exists(CSVfile);这有相同的结果,在1行而不是4行。
//
if (downloadOk == true)
{
return true;
}
else
{
return false;
}更糟糕的是。这一行:
return downloadOk;在一行代码中...does完全相同的事情,而不是7行代码。
另外,异常块中的两行...
catch (Exception error)
{
downloadOk = false;
string err = error.Message;
}...do绝对什么都没有。在您的异常块中,downloadOk将始终为false,并且在局部变量"err“超出作用域之前永远不会使用它。
https://stackoverflow.com/questions/1056369
复制相似问题