下载文件C#时出错

Posted

技术标签:

【中文标题】下载文件C#时出错【英文标题】:Error when downloading the file C# 【发布时间】:2013-07-25 21:50:58 【问题描述】:

我的代码:

string dir = "/Users/valeria/Desktop/screening/"+cell;
string remoteUri ="http://www.broadinstitute.org%2Fcmap%2FviewScan.jsp%3Ftype%3DCEL%26scan%3D"+p;
            string pFileName = dir + "/p";

            using (WebClient myWebClient = new WebClient())
            
                myWebClient.DownloadFile(remoteUri, pFileName);

            

我的程序创建了一个文件pFileName,但没有下载任何内容,因为我收到以下异常:

未处理的异常:System.Net.WebException:找不到一部分 路径 “/Users/valeria/Projects/screening/screening/bin/Debug/http:/www.broadinstitute.org/cmap/viewScan.jsp?type=CEL&scan=EC2003090503AA”。 ---> System.IO.DirectoryNotFoundException: 找不到路径的一部分 "/Users/valeria/Projects/screening/screening/bin/Debug/http:/www.broadinstitute.org/cmap/viewScan.jsp?type=CEL&scan=EC2003090503AA"

怎么了?

【问题讨论】:

您可能想查看变量“cell”的值。 @AdrianWragg 一切正常。程序创建文件。单元格只是一个字符串 【参考方案1】:

转义的 URI 肯定没有帮助。 URL 编码通常仅在您正在编码的项目被附加到 URL 时使用;对 URL 本身进行编码是不必要的,并且会导致其他问题。

我强烈建议改变

  string remoteUri="http://www.broadinstitute.org%2Fcmap%2FviewScan.jsp%3Ftype%3DCEL%26scan%3D"+p;

  string remoteUri ="http://www.broadinstitute.org/cmap/viewScan.jsp?type=CEL&scan="+p;

然后重试。

【讨论】:

太棒了!非常感谢! @F***Bigler - 我第一次直接读过去,别担心 - 然后,我尝试在控制台应用程序中实际运行它! @AdrianWragg 很公平。我认为这与文件名有关,因为错误表明了这一点。 ;)【参考方案2】:

变量单元格 - 正如 Adrian Wragg 所指出的 - 错误。

您的错误已经表明您的问题(粗体部分是您的单元格变量中的内容) "/Users/valeria/Projects/screening/screening/bin/Debug/http:/www.broadinstitute.org/cmap/viewScan.jsp?type=CEL&scan=EC2003090503AA"

所以请确保您提供有效的路径。

如果你不相信我,你可以像这样检查你的文件路径:

If (!System.IO.Directory.Exists(dir))

Stop; //<== if it hits here, we are right. ;-)

【讨论】:

当我不使用 dir 而只写 myWebClient.DownloadFile(remoteUri, "file.txt");我得到同样的错误【参考方案3】:

你的代码有两个问题:

1:您正在使用编码的 Uri,因此您必须使用 System.Web.HttpUtility 解码您的 Uri:

string decodedUri = HttpUtility.UrlDecode(remoteUri);

然后,你会得到正确的 Uri:

http://www.broadinstitute.org/cmap/viewScan.jsp?type=CEL&scan=EC2003090503AA

你应该传递给myWebClient

myWebClient.DownloadFile(decodedUri, pFileName);

2:您的 cell 变量指向 url,因此您必须修复它。您可以将其分配为 string.Empty 或将其临时删除以查看该解决方案是否有效。

【讨论】:

以上是关于下载文件C#时出错的主要内容,如果未能解决你的问题,请参考以下文章

下载文件PHP时出错

RSelenium:使用Chrome下载文件时出错

我下载的较大的文件压缩文件,解压缩时总是出现CRC错误

在python中从URL下载实时pdf文件时出错

在 AdHoc 分发中下载 .ipa 文件时出错

将文件从S3下载到EC2时出错