如何使用C#将所有文件夹从服务器复制到本地驱动器

时间:2017-04-12 14:01:25

标签: c# asp.net

我从Web.config文件中获取路径:

<appSettings>    
    <add key="Server" value="http://admin.xxxxxxx.com/1upload/*All File And Folder Copy this directory *"/>
    <add key="Local" value="C:\\Users\\IND_COM\\Desktop\\xxxx\\1upload\\paste The Copyed File"/>
</appSettings>

在按钮点击事件中,我传递了源和目标路径:

protected void btnUpdate_Click(object sender, EventArgs e)
{
    string Source_path = ConfigurationManager.AppSettings["server"].ToString();
    string Detination_Path = "@" + ConfigurationManager.AppSettings["Local"].ToString();
    DirectoryCopy(Source_path, Detination_Path, true);
}

private static void DirectoryCopy(string sourceDirName, string destDirName, bool copySubDirs)
{          
    DirectoryInfo dir = new DirectoryInfo(sourceDirName);//Exception Through In this Section..  

    if (!dir.Exists)
    {
        throw new DirectoryNotFoundException("Source directory does not exist or could not be found: "+ sourceDirName);
    }


    DirectoryInfo[] dirs = dir.GetDirectories();
    if (!Directory.Exists(destDirName))
    {
        Directory.CreateDirectory(destDirName);
    }


    FileInfo[] files = dir.GetFiles();
    foreach (FileInfo file in files)
    {
        string temppath = Path.Combine(destDirName, file.Name);
        file.CopyTo(temppath, false);
    }

    if (copySubDirs)
    {
        foreach (DirectoryInfo subdir in dirs)
        {
            string temppath = Path.Combine(destDirName, subdir.Name);
            DirectoryCopy(subdir.FullName, temppath, copySubDirs);
        }
    }
}

在我的托管服务器上,我有一个文件夹,所有图像和XML都保存在不同的文件夹中。例如,我有一个名为1Upload的目录。在这个目录里面我有3个子目录,每个子目录都有不同的文件。我尝试从服务器复制所有3个目录和文件。这段代码给出了异常

  

不支持URI

1 个答案:

答案 0 :(得分:0)

HTTP不是文件系统。

您要做的是执行文件系统复制操作,而是从Web下载内容并保存它到您的文件系统。为此,您需要the WebClient.DownloadFile() method

之类的内容

例如:

var client = new WebClient();
client.DownloadFile(sourceURL, destinationFile);

每个文件都是一个单独的请求。您当前正在尝试列出网站的目录内容,这显然不会起作用(因为HTTP不是文件系统)。但是,您构建了文件列表,一旦有了该列表,就可以遍历它并为每个文件调用DownloadFile(source, destination)

如果您需要网站提供文件列表,您必须将该功能添加到网站(如果它还没有,我们不知道)。如果您需要在一个操作中下载所有文件,那么网站需要在单个文件中提供它们(例如.zip文件)。