c #web app - 允许客户端FTP整个文件夹

时间:2013-02-17 18:36:23

标签: c# .net ftp

我有一个 c#webapp ,我需要允许用户将整个文件夹及其内容上传到服务器。我的代码仅在本地测试时有效,因为它搜索本地目录的所有内容并上传

当我将应用程序部署到服务器时,我不确定如何保持这种工作。有人知道一个一个允许你一次上传整个文件夹的网页界面的例子吗?

private void uploadWebsite(string dirPath, string uploadPath, string imagesPath)
{
     string[] files = Directory.GetFiles(dirPath, "*.*");
     string[] subDirs = Directory.GetDirectories(dirPath);

     foreach (string file in files)
     {
         ftpClient.upload(uploadPath + "/" + Path.GetFileName(file), file);
         if (file.Contains(".jpg") || file.Contains(".png") || file.Contains(".gif"))
             ftpClient.upload(uploadPath + "/images/" + Path.GetFileName(file), file);
     }

     foreach (string subDir in subDirs)
     {
         ftpClient.createDirectory(uploadPath + "/" + Path.GetFileName(subDir));
         uploadWebsite(subDir, uploadPath + "/" + Path.GetFileName(subDir), null);
     }
}

1 个答案:

答案 0 :(得分:0)

要获得可用的最终用户体验,您必须依靠Flash来提供上传控件。像这样:

http://webdeveloperplus.com/jquery/multiple-file-upload-with-progress-bar-using-jquery/

这归结为向最终用户提供一次选择多个项目的方法。后端的代码也发生了巨大的变化,因为您将处理一组文件上传。

维护目录结构也可能是个问题; IIRC [大多数/全部?]浏览器仅在使用multipart / form-data传输数据时提供文件名。

您应该考虑是否要求最终用户创建一个zip文件 - 因此只需要选择上传的单个文件,并保留目录结构 - 可能是解决此问题的更好方法。