下载文件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#时出错的主要内容,如果未能解决你的问题,请参考以下文章