挑战--asp.net 文件夹上传
今天遇到一个有趣的问题,公司让平安做一个上传文件夹的功能,这个任务具有一定的挑战性哦。上传文件夹,我第一次看到有人这样做,以前都是上传压缩文件,从来就没有见人上传过文件夹,我也从来就没有尝试过。先不讨论公司那些人是怎么想的,不过这是一个具有研究性的问题。自己思考一阵子,想出一个解决方案。
公司是做Web项目开发的,对于一个网站来说上传那肯定是必不可少的功能。呵呵,上传文件想得出来也不错。下面是我的两种考虑方案
(1)使用Directory这个类结合JavaScript
到目前为止,这种方案都没有实现过,可能是自己的能力有限。用Directory循环遍历这个文件夹下面的所有文件和文件夹,如果遇到的是文件夹在服务器指定目录下创建同样一个文件夹,而遇到压缩文件则上传这个文件。到目前我不清楚怎样用JavaScript 来遍历文件夹中的内容,即使读出了文件中的所有内容,循环上传文件和创建文件,就是说每一次循环都要访问一次服务器,如果文件夹的内容大,结构目录深,问题就显而易见了。似乎问题就是捉襟见肘一样,解决了一个又暴露另一个问题,没有办法,这种解决方案显然很伤脑筋。
(2)可行性方案(经测试已经通过)
分析的思路就是既然上传文件都是上传的压缩文件, asp.net 中的控件上传也只能上传压缩文件,那我们何必不讲这个文件夹压缩呢,压缩上传就是说文件到服务的这部分问题解决了,进而就是将压缩文件解压出来。呵呵,当我考虑到这个问题的时候又蒙了,.net解压文件似乎有点困难哦,读文件写文件还差不多,现在是一种文件格式到另一种文件格式的转化,显然我没有则了。
我不能放弃这种想法,毕竟相当于上面的是进步,虽然这么很容易实现。我曾经能将图片的属性转化,现在同样是文件转化一定是有办法的。解压......,呵呵我们不是经常用到解压工具么,Windows上面一般都要安装的,否则怎么读取压缩文件。对啊是办法,通过他来解压,现在我要做的就是用C#让这个程序自动运行,那问题就全部解决了。
去年做游戏开发的时候用过哦,就是写一个程序将Windows中的键盘功能全部屏蔽掉,然后通过调用另外一个外部程序来驱动键盘,呵呵问题都解决了。我只要驱动这个解压程序就可以了啊,这个驱动是我曾经做过的啊。
string winrarExe = @"C:\Program Files\WinRAR\WinRAR.exe"; //这个就是解压文件程序的路径
string filepathTo = "CommonData.rar";//被解压文件的路径
string filePathSave = ""; //解压保存文件名称
Process p = new Process(); //这个就是用来驱动上面的程序的
p.StartInfo.FileName = winrarExe;
string arguments = @"x -inul -y -o+";
arguments += " " + filepathTo + " " + filePathSave;
p.StartInfo.Arguments = arguments; //这是传递相应参数
p.Start();
while (!p.HasExited)
{
p.WaitForExit();
}
上面的东西说白了就是启动一个线程,没有什么的。具体参数如下,网上很多资料,我翻阅书籍查询了几个:
p.StartInfo.Arguments=" a -r "+strR+" "+strF; //默认压缩到RAR
p.StartInfo.Arguments=" a -afzip "+strR+" "+strF; //压缩到Zip
p.StartInfo.Arguments=" m "+strR+" "+strF; //压缩到RAR并删除原文件
p.StartInfo.Arguments=" a -p123456 "+strR+" "+strF; //密码为123456
p.StartInfo.Arguments=" x "+strR+" "+strF; //从RAR解压缩,文件名要一致
p.StartInfo.Arguments=" x -p123456 "+strR+" "+strF; //解压加密的RAR
" x -o+" 覆盖已经存在的文件
" x -o-" 不覆盖已经存在的文件
" x " + strzipPath + " qingyuan.txt "' + strtxtPath
只从压缩包中解压出qingyuan.txt,其它文件不予解压
" -y" 对所有询问回应为"是",即发生错误也不弹出窗口
" -cl" 转换文件名为小写字母
公司的那个功能我基本算是实现了,但是有点不符合情理呵呵,让我上传文件夹,而我上传的是压缩文件,走了弯路,没有按需求来,呵呵没有办法,慢慢再去研究上传文件夹吧,这个能解燃眉之急
挑战--asp.net 文件夹上传的更多相关文章
- asp.net文件夹上传下载组件
ASP.NET上传文件用FileUpLoad就可以,但是对文件夹的操作却不能用FileUpLoad来实现. 下面这个示例便是使用ASP.NET来实现上传文件夹并对文件夹进行压缩以及解压. ASP.NE ...
- asp.net文件夹上传源码
ASP.NET上传文件用FileUpLoad就可以,但是对文件夹的操作却不能用FileUpLoad来实现. 下面这个示例便是使用ASP.NET来实现上传文件夹并对文件夹进行压缩以及解压. ASP.NE ...
- asp.net文件夹上传下载控件分享
用过浏览器的开发人员都对大文件上传与下载比较困扰,之前遇到了一个需要在.net环境下大文件上传的问题,无奈之下自己开发了一套文件上传控件,在这里分享一下.希望能对你有所帮助. 以下是此例中各种脚本文件 ...
- Web大文件(夹)上传(断点续传)控件发布-Xproer.HttpUploader6
版权所有 2009-2017荆门泽优软件有限公司 保留所有权利 官方网站:http://www.ncmem.com/ 产品首页:http://www.ncmem.com/webapp/up6.2/in ...
- Web大文件(夹)上传(断点续传)控件-Xproer.HttpUploader6
版权所有 2009-2017荆门泽优软件有限公司 保留所有权利 官方网站:http://www.ncmem.com/ 产品首页:http://www.ncmem.com/webapp/up6.2/in ...
- js文件夹上传
文件夹上传:从前端到后端 文件上传是 Web 开发肯定会碰到的问题,而文件夹上传则更加难缠.网上关于文件夹上传的资料多集中在前端,缺少对于后端的关注,然后讲某个后端框架文件上传的文章又不会涉及文件夹. ...
- Linux 本地文件或文件夹上传服务器
Linux 本地文件或文件夹上传服务器 一.权限设置 本地文件或文件夹上传服务器,你首先需要获取到root权限: 二.上传方式 上传方式有两种 : 1.通过 FTP 客户端上传文件或文件夹: 2.通过 ...
- html5 实现 文件夹上传
先插个背景:最近所在项目有个小需求,就是上传文件要可以同时选择文件夹及文件,然后把文件夹内得文件及所选单文件全部选择上传,借助于搜索关键词没搜到想要的结果(相关文章貌似很好,要么就是遍历文件夹内的文件 ...
- java web 实现文件夹上传(保留目录结构)
今天我弄了一下文件夹上传(很简单的 首先,我们的html需要这样写 <form action="/file/upload" enctype="multipart/f ...
随机推荐
- HDU6380 2018 “百度之星”程序设计大赛 - 初赛(B) A-degree (无环图=树)
原题地址 degree Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Tot ...
- 洛谷——P2656 采蘑菇
P2656 采蘑菇 题目描述 小胖和ZYR要去ESQMS森林采蘑菇. ESQMS森林间有N个小树丛,M条小径,每条小径都是单向的,连接两个小树丛,上面都有一定数量的蘑菇.小胖和ZYR经过某条小径一次, ...
- ARC 098 C - Attention
Problem Statement There are N people standing in a row from west to east. Each person is facing east ...
- JAVA常见算法题(二十四)
package com.xiaowu.demo; //一个5位数,判断它是不是回文数.即12321是回文数,个位与万位相同,十位与千位相同. public class Demo24 { public ...
- nginx,wsgi,django的关系
http://blog.csdn.net/lihao21/article/details/52304119 wsgi用于连续 nginx和django,客户端发来的请求,先经过wsgi,然后再传给dj ...
- ISP图像处理算法之---Demosaic
目前市场上主流传感器为Coms传感器,sensor出来的的数据格式为bayer数据格式,这种格式,每个像素点只有三个颜色通道中的一个,如图1所示 ...
- log4j教程 10、PatternLayout
如果想生成基于模式的特定格式的日志信息,那么可以使用 org.apache.log4j.PatternLayout 格式化日志信息. PatternLayout类扩展抽象 org.apache.log ...
- log4j输出日志到flume
现需要通过log4j将日志输出到flume,通过flume将日志写到文件或hdfs中 配置flume-config文件 将日志下沉至文件 a1.sources = r1 a1.sinks = k1 a ...
- Unity3D导入外部任务模型无法触发鼠标事件解决方案
前几日 在做U3D测试的时候 导入了网上的一个人物模型 但是后来发现无论如何该模型都无法响应诸如:OnMouseDown 这些鼠标事件 又用U3D自带的水管工做了测试 发现不是我系统的问题= = 水管 ...
- 怎么windows10下设置始终以管理员身份运行
怎么windows10下设置始终以管理员身份运行 学习了:https://jingyan.baidu.com/article/e2284b2b6e6df8e2e7118d7a.html 可以对快捷方式 ...