上篇《BS文件夹上传操作 》大概说明了我所需要的需求,

接着上次的命题:


 “如果有一个需求,要求你在BS上实现文件夹上传操作功能?你该如何实现?”

 

ActiveX?Js插件?自定义控件 还是……

再看下需求:

客户端选择任一文件夹上传到服务器中,在服务器上建立相关文件夹且相应文件上传到相应的文件夹中。

操作:选择任意一个文件夹上传 文件夹中相关文件也上传

出来的效果:

主要源码:

        /// <summary>/// 导入->确定 方法/// </summary>/// <param name="path"></param>        [DirectMethod]public void GetPath(string readPath)        {   string storePath = @"C:\Documents and Settings\Administrator\桌面\Test\";     //目标目录               string strFile = FolderHelper.FindFileByPath(readPath, storePath);            CommonMethod.Show("", strFile, Ext.Net.MessageBox.Icon.INFO);         }

FolderHelper

/// <summary>/// 根据路径获取该文件夹下文件/// </summary>/// <param name="readPath">文件读取路径</param>/// <param name="storePath">文件存储路径</param>/// <returns>导入成功,失败</returns>        public static string FindFileByPath(string readPath, string storePath)        {try            {                DirectoryInfo diInfo = new DirectoryInfo(readPath); //上传                DirectoryInfo diInfoStore = new DirectoryInfo(storePath + diInfo.Name);//存储                if (!diInfoStore.Exists)//存储到指定路径判断文件夹不存在则新建                     diInfoStore.Create();                 FileSystemInfo[] fsInfo = diInfo.GetFileSystemInfos();//获取该目录下所有文件和子目录                foreach (FileSystemInfo fs in fsInfo)//遍历数组                {if (fs is FileInfo)//文件                    {byte[] file = FileToBinary(fs.FullName);                        BinaryToFile(storePath + diInfo.Name, fs.Name, file);                    }if (fs is DirectoryInfo)//文件夹                    {                         FindFileByPath(fs.FullName, storePath + diInfo.Name + "\\");                    }                }return "导入成功";            }catch (Exception)            {return "导入失败";            }        }/// <summary>/// 将文件转换为二进制流进行读取/// </summary>/// <param name="fileName">文件完整名路径</param>/// <returns>文件二进制流</returns>        private static byte[] FileToBinary(string fileName)        {            FileStream fsRead = new FileStream(fileName, FileMode.Open, FileAccess.Read);try            {if (fsRead.CanRead)                {int fsSize = Convert.ToInt32(fsRead.Length);byte[] btRead = new byte[fsSize];                    fsRead.Read(btRead, 0, fsSize);return btRead;                }else                {throw new Exception("文件读取错误!");                }            }catch (Exception ex)            {throw new Exception(ex.Message);            }finally            {                fsRead.Close();            }        } /// <summary>/// 将二进制流转换为对应的文件进行存储/// </summary>/// <param name="storePath">存储文件名的路径</param>/// <param name="fileName">文件名</param>/// <param name="btBinary">二进制流</param>        private static void BinaryToFile(string storePath, string fileName, byte[] binary)        {             FileStream fsWrite = new FileStream(storePath + "\\" + fileName, FileMode.Create, FileAccess.Write);try            {if (fsWrite.CanWrite)                {                    fsWrite.Write(binary, 0, binary.Length);                }            }catch (Exception ex)            {throw new Exception(ex.Message);            }finally            {                fsWrite.Close();            }        }

基本的上传功能实现,但是牺牲了安全性,抽空试试Left join.G 提供的帮助ActiveX。在这也感谢园中两位朋友的Left join.G和sunriseyuen。

谢谢

 

作者:PEPE
出处:http://pepe.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

BS文件夹上传操作(二) ——基本功能实现相关推荐

  1. vue文件夹上传组件选哪个好?

    一. 功能性需求与非功能性需求 要求操作便利,一次选择多个文件和文件夹进行上传: 支持PC端全平台操作系统,Windows,Linux,Mac 支持文件和文件夹的批量下载,断点续传.刷新页面后继续传输 ...

  2. vue文件夹上传源码

    一. 功能性需求与非功能性需求 要求操作便利,一次选择多个文件和文件夹进行上传: 支持PC端全平台操作系统,Windows,Linux,Mac 支持文件和文件夹的批量下载,断点续传.刷新页面后继续传输 ...

  3. SpringMVC文件夹上传解决方案

    本人在2010年时使用swfupload为核心进行文件的批量上传的解决方案.见文章:WEB版一次选择多个文件进行批量上传(swfupload)的解决方案. 本人在2013年时使用plupload为核心 ...

  4. 拖拽文件夹上传 一(基于Vue的文件夹上传组件)

    前言 首先说一下,小弟第一次写文章,如果有什么错误 还望小哥哥 小姐姐多多包涵.如果有什么缺陷还望大家指出来 让小弟多学习. 内容划分 上传文件夹一共分两部分来写 一方面怕太长了 大家看五分钟就不想看 ...

  5. java 文件下载 组件_java文件夹上传下载组件

    核心原理: 该项目核心就是文件分块上传.前后端要高度配合,需要双方约定好一些数据,才能完成大文件分块,我们在项目中要重点解决的以下问题. *如何分片: *如何合成一个文件: *中断了从哪个分片开始. ...

  6. java+http文件夹上传

    在web项目中上传文件夹现在已经成为了一个主流的需求.在OA,或者企业ERP系统中都有类似的需求.上传文件夹并且保留层级结构能够对用户行成很好的引导,用户使用起来也更方便.能够提供更高级的应用支撑. ...

  7. 文件上传控件-如何上传文件-文件夹上传

    需求: 项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在20G内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以20G来进行限制. PC端全平台支持,要求支持Window ...

  8. 多文件上传,文件夹上传

    前言 当您需要上传多个文件时,您可能会发现自己需要一种方法来处理多个上传任务.在某些情况下,您可能需要一次性上传所有文件.在其他情况下,您可能希望对文件进行排队以便逐个上传. 在本文中,我将介绍如何使 ...

  9. 基于layui.upload.js 拖拽文件/文件夹上传下载

    layui.upload.js 拖拽文件/文件夹上传下载 前言 js代码 页面使用(我这里用的是uploader.jsp) CSS文件 上传效果 总结 前言 项目需求完成文件上传,可以拖拽上传文件/文 ...

最新文章

  1. Git如何将本地分支推送到远程库中
  2. 生成docker镜像
  3. How to hide index.php on nginx
  4. different behavior dialog popup display no
  5. 【C++编程题1】数组指针之字符串排序
  6. java 字符码_Java字符编码
  7. 将一个项目中的图片存到另一个项目中_复盘一个Smart200小项目(2)
  8. php 检验类,php实现的简单检验登陆类
  9. android 按下缩小效果松开恢复_22省份三季报:粤苏总量差距缩小,19省份实现正增长...
  10. 「leetcode」C++题解:20. 有效的括号,括号匹配是使用栈解决的经典问题
  11. Overleaf 指南:30 分钟 LaTeX 入门
  12. 计算机组成原理10——建立数据通路
  13. 推荐几款好用的网站CMS管理系统
  14. get请求中文乱码处理方法
  15. js渲染引擎 tempo.js
  16. 关于无法完全停止windowsUpdate的解决方法
  17. convert_variables_to_constants()
  18. python中shelf对象_11.4. shelve — Python 对象持久化 — Python 2.7.18 文档
  19. [软件测试]怎么测试一个杯子
  20. 写点看Harvard CS50 公开课的感受

热门文章

  1. 【转载】C#扫盲之:==/Equals /ReferenceEquals 异同的总结,相等性你真的知道吗?
  2. 从Google的PaaS平台说起,解析中美Docker生态圈
  3. 美国光伏发电市场是否稳定?电池板价格降至40美分/W!
  4. 在Ubuntu中使用远程桌面
  5. IPsec在企业网中的应用
  6. 【S1官方核心】18128核心纯净雅黑H大全力打造的1.9精品
  7. PHP版本VC6与VC9/VC11/VC14、Thread Safe与None-Thread Safe等的区别
  8. Educational Codeforces Round 4 C. Replace To Make Regular Bracket Sequence 栈
  9. hadoop之MapReduce框架TaskTracker端心跳机制分析(源码分析第六篇)
  10. Effective java笔记3--类和接口2