黑马程序员技术交流社区

标题: 有什么办法可以上传文件夹? [打印本页]

作者: cmcm2014    时间: 2014-3-24 20:01
标题: 有什么办法可以上传文件夹?
上次压缩文件是可以的,但是如何上传文件夹?
有一个方案是用户选择文件夹后,在后台中先将此文件夹压缩,之后上传到服务端保存。
之后用户选择之前选择的文件夹时,再在后台解压缩之后显示给用户看。
但是此种方案,过于繁琐,也消耗性能
请问有别的优的解决方案吗?

作者: 鬼鬼    时间: 2014-3-24 20:35
本帖最后由 鬼鬼 于 2014-3-24 20:55 编辑

我的想法是在服务器端创建同名的文件夹,然后遍历本地目录,逐个上传目录中文件。
基础视频第四部分“4-Winform基础”中第17节“17File类和Dirctory类_OpenFileDialog_SaveFileDialog_FolderBrowserDialog”有复制整个目录的详细讲解,楼主可以参考一下。
核心代码如下:
  1.             string[] files = Directory.GetFiles("DirectoryPath1");
  2.             foreach (string filePath in files)
  3.             {
  4.                 string fileName = filePath.Substring(filePath.LastIndexOf("\\") + 1);
  5.                 File.Copy(filePath, "DirectoryPath2" + "\\" + fileName, true);
  6.             }
复制代码

作者: 伪善者。    时间: 2014-3-24 20:38
鬼鬼 发表于 2014-3-24 20:35
我的想法是在服务器端创建同名的文件夹,然后遍历本地目录,逐个上传目录中文件。
基础视频第四部分“4-Win ...

0 0点错了 点了反对 sorry
作者: 鬼鬼    时间: 2014-3-24 20:41
伪善者。 发表于 2014-3-24 20:38
0 0点错了 点了反对 sorry

没事…………:L
作者: cmcm2014    时间: 2014-3-24 20:41
鬼鬼 发表于 2014-3-24 20:35
我的想法是在服务器端创建同名的文件夹,然后遍历本地目录,逐个上传目录中文件。
基础视频第四部分“4-Win ...

这种方案确实可以实现,但如果文件夹中包含了一个空文件件,此时不是不可以实现这样的功能了么
作者: 鬼鬼    时间: 2014-3-24 21:18
cmcm2014 发表于 2014-3-24 20:41
这种方案确实可以实现,但如果文件夹中包含了一个空文件件,此时不是不可以实现这样的功能了么 ...

楼主的意思是说目录中有子目录存在的情况吧?写了一个方法,尝试用递归调用解决这个问题,不过还没来得及测试,楼主可以试试看……
  1.         private bool copyDirectory(string sourcePath, string objectPath)
  2.         {
  3.             try
  4.             {
  5.                 string[] files = Directory.GetFiles(sourcePath);
  6.                 foreach (string sourceFile in files)
  7.                 {
  8.                     string fileName = sourceFile.Substring(sourceFile.LastIndexOf("\\") + 1);
  9.                     string objectFile = objectPath + "\\" + fileName;
  10.                     if (Directory.Exists(sourceFile))
  11.                     {
  12.                         //若此路径为子目录,则对自身进行递归调用
  13.                         Directory.CreateDirectory(objectFile);
  14.                         copyDirectory(sourceFile, objectFile);
  15.                     }
  16.                     else
  17.                     {
  18.                         File.Copy(sourceFile, objectFile, true);
  19.                     }
  20.                 }
  21.                 return true;
  22.             }
  23.             catch
  24.             {
  25.                 return false;
  26.             }
  27.         }
复制代码

作者: cmcm2014    时间: 2014-3-24 21:31
鬼鬼 发表于 2014-3-24 21:18
楼主的意思是说目录中有子目录存在的情况吧?写了一个方法,尝试用递归调用解决这个问题,不过还没来得及 ...

好吧 我总算找到解决方案了 原来有上传文件夹的插件,哈哈,不过也谢谢你了。
这是我找到的答案 贴上吧
http://bbs.csdn.net/topics/210072709




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2