如何在WebClient.DownloadFile期间在c#中解决路径太长的异常

时间:2012-10-11 17:51:43

标签: c# exception webclient

当我尝试使用webClient.DowloadFile下载文件时出现异常。

WebClient webClient = new WebClient();
Uri downloadUri = new Uri("http://ia.mediaimdb.com/images/M/MV5BMjA5MTE1MjQyNV5BMl5BanBnXkFtZTcwODI4NDMwNw@@._V1._SY0.jpg");            
string posterFilePath = 
           "D:\Visual Studio Projects\Projects\TFS Source Control\" +
           "MyMovieManager\MyMoviesManager\MyMoviesManager\bin\Debug\" +
           "MoviesDB\Journey.2.The.Mysterious.Island.2012.DVDRip.XviD-DEPRiVED[ExtraTorrent]\" +
           "Journey.2.The.Mysterious.Island.2012.DVDRip.XviD-DEPRiVED[ExtraTorrent].png";
webClient.DownloadFile(downloadUri, posterFilePath); 

我发现其他情况是抛出了这个异常,我的解决方案是使用kernel32 中的函数并编写其他函数来替换File和Path函数。

我可以对DownloadFile函数做些什么吗?

3 个答案:

答案 0 :(得分:2)

您可以使用LongPathFile class from the BCL project,并手动写入结果流。这需要使用DownloadData而不是DownloadFile,并自行管理文件。

答案 1 :(得分:1)

您可以将webclient.DownloadFile用于临时文件,即C:\ Temp \ myDownload.png,然后将其移动到所需的路径。您需要检查c:\ Temp文件夹是否存在。如果没有,请创建它。

答案 2 :(得分:-1)

有一点需要注意的是,如果使用接受2个字符串的函数的版本,如果文件的地址(第一个参数)太长,也会引发此异常。 当然,解决方案是使用Uri将其转换为new Uri(address)