下载文件C#时出错

本文关键字:出错 文件 下载 | 更新日期: 2023-09-27 18:24:55

我的代码:

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/screding/bin/Debughttp://www.broadinstitute.org/cmap/viewScan.jsp?type=CEL&scan=EC2003090503AA"。--->System.IO.DirectoryNotFoundException:找不到路径的一部分"/Users/valeria/Projects/screening/screding/bin/Debughttp://www.broadinstitute.org/cmap/viewScan.jsp?type=CEL&scan=EC2003090503AA"

怎么了?

下载文件C#时出错

转义的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;

并重新尝试。

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

您的错误已经表明了您的问题(粗体部分是单元格变量中的内容)"/Users/valeria/Projects/screening/screding/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. ;-)
}

您的代码有两个问题:

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

string decodedUri = HttpUtility.UrlDecode(remoteUri);

然后,您将获得正确的Uri:

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

您应该将其传递给myWebClient:

myWebClient.DownloadFile(decodedUri, pFileName);

2:你的cell变量指向url,所以你必须修复它。你可以将它分配为string.Empty或临时删除它,看看这个解决方案是否有效。