下载文件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"
怎么了?
转义的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
或临时删除它,看看这个解决方案是否有效。