C# 从互联网下载文件?
我对下面的代码块感到困惑,因为为什么它下载网页的内容而不是文件本身。我创建了一个包含一些文本的虚拟文件,然后我下载了它,但是当我打开下载文件时,我没有看到我写的任何文本,但是它有奇怪的web语言标签C# 从互联网下载文件?,c#,downloadfile,C#,Downloadfile,我对下面的代码块感到困惑,因为为什么它下载网页的内容而不是文件本身。我创建了一个包含一些文本的虚拟文件,然后我下载了它,但是当我打开下载文件时,我没有看到我写的任何文本,但是它有奇怪的web语言标签 private bool DownloadCSVfile() { bool downloadOk = false; WebClient client = null; try { client =
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;
}
}
我猜我的URL以/而不是.csv结尾,对吗?您是否认为myURL+CSVFile将包含文件的完整路径?不会的。URL必须是文件本身的路径。您可以拥有以下内容:
client.DownloadFile(@"./file.csv", "filename.txt");
如果我的思路不对,请告诉我URL中有什么,以及下载文件中的前几个标记中有哪些。该站点是否需要登录,并且它确实在重定向您
我以前也有过这样的经历,要求我在下载所需文件之前伪造浏览动作和存储cookies等。对不起,网页在网页内容中的含义是什么。这里只涉及一个URL,那就是myURL。myURL是否直接指向CSV文件?如果是这样,那么您接收的内容实际上是什么样子的 此外: …太尴尬了。请写:
downloadOk = File.Exists(CSVfile);
这有相同的结果,在1行而不是4行
//
if (downloadOk == true)
{
return true;
}
else
{
return false;
}
这更糟糕。单行线:
return downloadOk;
…在1行代码而不是7行代码中执行完全相同的操作
另外,异常块中的两行
catch (Exception error)
{
downloadOk = false;
string err = error.Message;
}
……什么也不做。downloadOk在异常块中始终为false,并且在局部变量err超出范围之前从未使用过。Yep站点需要登录。所以在我用我的ID和密码登录之后,我只需手动上传文件并运行代码。我也尝试删除该文件,然后运行代码,但它仍然会下载网页内容。因此,您对我修复此问题有什么建议吗?请提供有关myURL指向的内容以及您实际收到的网页内容的更多信息。感谢您指出这一点,但我希望清楚易读。下载该文件后,我打开下载文件,看到了一堆网页标签,所以可能不是真正的网页内容,而是一堆我不理解的标签。它喜欢html标签之类的东西。是的,myURL实际上指向我的CSV文件所在的位置。例如,DownloadFile@,dummy.csvlocal变量err,我只是在调试时使用它来查看错误消息的类型,因为我不想在消息框中显示异常错误。yep myURL以/,文件名在下载文件的第二个参数中。在myURL中的“/”后面添加文件名。下载文件中的标记如下:真的,我必须在/之后添加我的文件名,因此如下所示:client.DownloadFilemyURL+CSVfile,CSVfile;对第一个参数必须指定文件的位置,而不仅仅是文件所在的目录,正如您在问题中所看到的那样。
catch (Exception error)
{
downloadOk = false;
string err = error.Message;
}