我有一个 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);
}
}
答案 0 :(得分:0)
要获得可用的最终用户体验,您必须依靠Flash来提供上传控件。像这样:
http://webdeveloperplus.com/jquery/multiple-file-upload-with-progress-bar-using-jquery/
这归结为向最终用户提供一次选择多个项目的方法。后端的代码也发生了巨大的变化,因为您将处理一组文件上传。
维护目录结构也可能是个问题; IIRC [大多数/全部?]浏览器仅在使用multipart / form-data传输数据时提供文件名。
您应该考虑是否要求最终用户创建一个zip文件 - 因此只需要选择上传的单个文件,并保留目录结构 - 可能是解决此问题的更好方法。