如何将下载的文件保存到本地文件夹?

时间:2019-04-19 07:24:06

标签: c# webclient

我想存储来自API的文件,我已经尝试了以下代码,但给出了错误。

string StrFileName = result.LabelDownload.Href;
string FilePath = ConfigurationManager.AppSettings["FilePath"].ToString();
string dir = string.Format("{0}{1:yyyy-MM}\\", FilePath, DateTime.Now);

   // Save the uploaded file.               
   if (!Directory.Exists(dir))
     Directory.CreateDirectory(dir);

    WebClient wc = new WebClient();
    wc.DownloadFile(StrFileName, dir);

错误:WebClient请求期间发生异常。 内部例外:文件名,目录名或卷标语法不正确。

如何从Web下载文件并将其存储在本地文件夹中?我需要将该路径保存在数据库中

2 个答案:

答案 0 :(得分:3)

WebClient.DownloadFile方法要求下载文件的文件名,而不仅仅是目录。因此,要么只传递文件名,它将文件保存到apps目录,要么提供完全限定的路径。

string sourceFileName =   
result.LabelDownload.Href;
string filePath = ConfigurationManager.AppSettings["FilePath"].ToString();
string dir = string.Format("{0}{1:yyyy-MM}", filePath, DateTime.Now);

   // Save the uploaded file.               
   if (!Directory.Exists(dir))
     Directory.CreateDirectory(dir);

    WebClient wc = new WebClient();
    wc.DownloadFile(sourceFileName, Path.Combine(dir, sourceFileName));

源文件也是如此。这是doc

也请看一下c# naming conventions,因为局部变量通常是小写字母。

答案 1 :(得分:0)

我解决了,

WebClient wc = new WebClient();
wc.DownloadFile(StrFileName, dir + filenameWithoutPath);

在没有添加文件名之前,所以我们需要添加文件名,在我的情况下,它是filenameWithoutPath,它现在可以正常工作。