我从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
答案 0 :(得分:0)
HTTP不是文件系统。
您要做的是不执行文件系统复制操作,而是从Web下载内容并保存它到您的文件系统。为此,您需要the WebClient.DownloadFile()
method。
例如:
var client = new WebClient();
client.DownloadFile(sourceURL, destinationFile);
每个文件都是一个单独的请求。您当前正在尝试列出网站的目录内容,这显然不会起作用(因为HTTP不是文件系统)。但是,您构建了文件列表,一旦有了该列表,就可以遍历它并为每个文件调用DownloadFile(source, destination)
。
如果您需要网站提供文件列表,您必须将该功能添加到网站(如果它还没有,我们不知道)。如果您需要在一个操作中下载所有文件,那么网站需要在单个文件中提供它们(例如.zip
文件)。