asp.net上传整个文件夹

通常10M如下的文件上传经过设置Web.Config,再用VS自带的FileUpload控件就能够了,可是若是要上传100M甚至1G的文件就不能这样上传了。我这里分享一下我本身开发的一套大文件上传控件供你们参考。
工程截图
数据库



文件块处理代码浏览器

https://blog.csdn.net/alisky119/article/details/91491383asp.net

using Newtonsoft.Json;post

using Newtonsoft.Json.Linq;优化

using System;ui

using System.Web;this

using up6.db.biz;spa

using up6.db.utils;.net

 

namespace up6.db3d

{

    public partial class f_post : System.Web.UI.Page

    {

        bool safe_check(params string[] ps)

        {

            foreach (var v in ps)

            {

                System.Diagnostics.Debug.Write("参数值:");

                System.Diagnostics.Debug.WriteLine(v);

                if (string.IsNullOrEmpty(v)) return false;

            }

            foreach (string key in Request.Headers.Keys)

            {

                var vs = Request.Headers.GetValues(key);

                //XDebug.Output(key + " "+String.Join(",", vs));

            }

            return true;

        }

 

        /// <summary>

        /// 只负责拼接文件块。将接收的文件块数据写入到文件中。

        /// 更新记录:

        ///       2012-04-12 更新文件大小变量类型,增长对2G以上文件的支持。

        ///       2012-04-18 取消更新文件上传进度信息逻辑。

        ///       2012-10-30 增长更新文件进度功能。

        ///       2015-03-19 文件路径由客户端提供,此页面再也不查询文件在服务端的路径。减小一次数据库访问操做。

        ///     2016-03-31 增长文件夹信息字段

        ///     2017-07-11 优化参数检查逻辑

        /// </summary>

        /// <param name="sender"></param>

        /// <param name="e"></param>

        protected void Page_Load(object sender, EventArgs e)

        {

            string uid          = Request.Headers["uid"];

            string f_id         = Request.Headers["id"];

            string lenSvr       = Request.Headers["lenSvr"];//已传大小

            string lenLoc       = Request.Headers["lenLoc"];//本地文件大小

            string blockOffset  = Request.Headers["blockOffset"];

            string blockSize    = Request.Headers["blockSize"];//当前块大小

            string blockIndex   = Request.Headers["blockIndex"];//当前块索引,基于1

            string blockMd5     = Request.Headers["blockMd5"];//块MD5

            string complete     = Request.Headers["complete"];//true/false

            string pathSvr      = Request.Form["pathSvr"];//

            pathSvr             = HttpUtility.UrlDecode(pathSvr);

 

            if( !this.safe_check(lenLoc,uid,f_id,blockOffset,pathSvr)) return;

 

            //有文件块数据

            if (Request.Files.Count > 0)

            {

                bool verify = false;

                string msg = string.Empty;

                string md5Svr = string.Empty;

                HttpPostedFile file = Request.Files.Get(0);//文件块

 

                //计算文件块MD5

                if (!string.IsNullOrEmpty(blockMd5))

                {

                    md5Svr = Md5Tool.calc(file.InputStream);

                }

 

                //文件块大小验证

                verify = int.Parse(blockSize) == file.InputStream.Length;

                if (!verify)

                {

                    msg = "block size error sizeSvr:"+file.InputStream.Length + " sizeLoc:"+blockSize;

                }

 

                //块MD5验证

                if ( verify && !string.IsNullOrEmpty(blockMd5) )

                {

                    verify = md5Svr == blockMd5;

                    if(!verify) msg = "block md5 error";

                }

 

                if (verify)

                {

                    //2.0保存文件块数据

                    FileBlockWriter res = new FileBlockWriter();

                    res.make(pathSvr, Convert.ToInt64(lenLoc));

                    res.write(pathSvr, Convert.ToInt64(blockOffset), ref file);

                    up6_biz_event.file_post_block(f_id,Convert.ToInt32(blockIndex));

 

                    //生成信息

                    JObject o = new JObject();

                    o["msg"] = "ok";

                    o["md5"] = md5Svr;//文件块MD5

                    o["offset"] = blockOffset;//偏移

                    msg = JsonConvert.SerializeObject(o);

                }

                Response.Write(msg);

            }

        }

    }

}

 

 

功能介绍

树形目录导航。您能够经过树型目录导航和路径导航栏快速跳转到指定目录。在跳转后树型目录将会自动选中当前的目录。

 

 

路径导航,点击根目录按钮即可返根目录

 

 

文件和目录重命名

 

点击删除按钮

说明: http://qqadapt.qpic.cn/adapt/0/a08d8c16-78a3-7ce5-c2cd-5df1e60fb8cc/800?pt=0&ek=1&kp=1&sce=0-12-12

点击肯定后,页面中的文件消失



 

 

批量上传文件

 

粘贴上传

复制文件夹、文件或图片

说明: http://qqadapt.qpic.cn/adapt/0/ab61b9d4-755b-ee18-376d-f4ac80ad6417/800?pt=0&ek=1&kp=1&sce=0-12-12

在页面中选择好相应的上传目录,点击粘贴上传按钮,数据便可快速开始上传

说明: http://qqadapt.qpic.cn/adapt/0/b9fa01e5-ebec-3887-6726-67dcbc1a77ef/800?pt=0&ek=1&kp=1&sce=0-12-12



 

 

批量上传文件和文件夹

 

文件和目录下载

 

批量下载

同时选择多个须要下载的文件 

而后点击下载按钮,设置下载目录文件夹

说明: C:\Users\Administrator\Desktop\2222.png



 

 

点击所有下载,开始下载

 

 

自动加载未上传完的任务。在刷新浏览器或重启电脑后仍然能够自动加载未完成的任务。

 

 

下载完成后打开咱们设置的下载目录文件夹,发现需下载的文件或文件夹确认已下载成功,经确认文件夹内的内容与下载文件夹内容一致

说明: http://qqadapt.qpic.cn/adapt/0/3224196a-396c-8ee1-b509-3179302fbd86/800?pt=0&ek=1&kp=1&sce=0-12-12


 

数据库记录

 

控件包下载:
cab(x86)
http://t.cn/Ai9pmG8S

cab(x64)http://t.cn/Ai9pm04B

xpihttp://t.cn/Ai9pubUc

crxhttp://t.cn/Ai9pmrcy

exehttp://t.cn/Ai9puobe

 

示例下载:

asp.nethttp://t.cn/Ai9pue4A

 

在线教程:
asp.net-
文件管理器教程:http://j.mp/2MLoQWf

相关文章
相关标签/搜索