我的代码:
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”
怎么了?
答案 0 :(得分:2)
转义的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;
并重新尝试。
答案 1 :(得分:0)
变量单元格 - 正如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. ;-)
}
答案 2 :(得分:0)
您的代码存在两个问题:
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
或临时删除它以查看该解决方案是否有效。