A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© cmcm2014 中级黑马   /  2014-3-24 20:01  /  1649 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

上次压缩文件是可以的,但是如何上传文件夹?
有一个方案是用户选择文件夹后,在后台中先将此文件夹压缩,之后上传到服务端保存。
之后用户选择之前选择的文件夹时,再在后台解压缩之后显示给用户看。
但是此种方案,过于繁琐,也消耗性能
请问有别的优的解决方案吗?

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

6 个回复

倒序浏览
本帖最后由 鬼鬼 于 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.             }
复制代码

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报 0 1
鬼鬼 发表于 2014-3-24 20:35
我的想法是在服务器端创建同名的文件夹,然后遍历本地目录,逐个上传目录中文件。
基础视频第四部分“4-Win ...

0 0点错了 点了反对 sorry
回复 使用道具 举报
伪善者。 发表于 2014-3-24 20:38
0 0点错了 点了反对 sorry

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

这种方案确实可以实现,但如果文件夹中包含了一个空文件件,此时不是不可以实现这样的功能了么
回复 使用道具 举报
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.         }
复制代码
回复 使用道具 举报
鬼鬼 发表于 2014-3-24 21:18
楼主的意思是说目录中有子目录存在的情况吧?写了一个方法,尝试用递归调用解决这个问题,不过还没来得及 ...

好吧 我总算找到解决方案了 原来有上传文件夹的插件,哈哈,不过也谢谢你了。
这是我找到的答案 贴上吧
http://bbs.csdn.net/topics/210072709
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马