下载文件C#时出错

时间:2013-07-25 21:50:58

标签: c# system.net system.net.webexception

我的代码:

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”

怎么了?

3 个答案:

答案 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或临时删除它以查看该解决方案是否有效。