asp.net文件批量上传下载代码与详细说明

asp教程.net文件批量上传下载代码与详细说明
private void DownLoadCompressFile()
        {
            //create file package
            List<CompanyFileDomain> lists = new List<CompanyFileDomain>();
            if (DeluxeGridFiles.SelectedKeys.Count > 0)
            {
                for (int i = 0; i < DeluxeGridFiles.SelectedKeys.Count; i++)
                {
                    CompanyFileDomain companyFile = CompanyFileAdapter.Instance.Load(DeluxeGridFiles.SelectedKeys[i]);
                    lists.Add(companyFile);
                }
            }
            BatchFiles batch = new BatchFiles(DeluxeIdentity.CurrentUser.LogOnName);
            if (lists != null)
            {
                batch.CreatePackageByCompanyFileDomain(lists);
            }
            //compress package
            string filepath =CompanyFileConfig.Instance.FileSavePath + "\" + DeluxeIdentity.CurrentUser.LogOnName;
            string filefolder=filepath  + "\";
            string zipfilename =filepath + ".zip";
            if (Directory.Exists(filefolder))
            {
                FastZip fastZip = new FastZip();
                //zip filename is full file name
                fastZip.CreateZip(zipfilename, filefolder, true, "");
            }
            FileInfo zipfile = new FileInfo(zipfilename);
            if (zipfile.Exists && Directory.Exists(filefolder))
            {
                DirectoryInfo di = new DirectoryInfo(filefolder);
                di.Delete(true);
                //Directory.Delete(filefolder);
            }
            //download zip file
            Response.Redirect("batchdown.aspx?FullFilePath=" + HttpUtility.UrlEncode(zipfilename) + "&FileName=" + HttpUtility.UrlEncode(DeluxeIdentity.CurrentUser.LogOnName + ".zip") + "");//传递参数到下载压缩包的页面,下载完成后把生成的压缩包删除掉
        }

这里的创建压缩文件夹采用了ICSharpCode.SharpZipLib.Zip,其下载地址是:
http://www.icsharpcode.net/OpenSource/SharpZipLib/Download.aspx

这里调用了 fastZip.CreateZip(zipfilename, filefolder, true, "");来创建压缩包,注意这里的第一个参数要写存储的文件的全路径,否则不能生成压缩文件

 

batch.CreatePackageByCompanyFileDomain(lists);
这里是根据选择的文件创建临时文件包

 

        /// <summary>
        /// 根据文件列表创建下载文件夹,并在文件夹里放置所有文件及其附件
        /// </summary>
        /// <param name="companyfiles"></param>
        public void CreatePackageByCompanyFileDomain(List<CompanyFileDomain> companyfiles)
        {
            if (companyfiles.Count > 0)
            {
                foreach (CompanyFileDomain fileEntity in companyfiles)
                {
                    CreatePackageByCompanyFileDomain(fileEntity);
                }
            }
        }
        /// <summary>
        /// 根据文件ID创建单个文件夹,并在其中放置文件及其附件
        /// </summary>
        /// <param name="resourceID"></param>
        public void CreatePackageByCompanyFileDomain(CompanyFileDomain companyfile)
        {
            if (companyfile != null)
            {
                if (!Directory.Exists(downLoadPath))
                {
                    Directory.CreateDirectory(downLoadPath);
                }
                string sourcefileNameWithoutExtend = companyfile.FileName.Substring(0,companyfile.FileName.Length-companyfile.ExtendFileName.Length);
                string sourcefileFullPath = RootFilePath + companyfile.RelativePath + "\" + companyfile.ID + companyfile.ExtendFileName;
                string desfileFolder = downLoadPath + sourcefileNameWithoutExtend;
                string desfileattchFolder = string.Empty;

                if (Directory.Exists(desfileFolder))
                {
                    desfileFolder = RenameFolder(desfileFolder);
                }
                desfileattchFolder = desfileFolder + "http://www.cnblogs.com/yungboy/admin/file://attchments//";
                Directory.CreateDirectory(desfileFolder);
                FileInfo newFile = new FileInfo(sourcefileFullPath);
                newFile.CopyTo(desfileFolder + "\" + companyfile.ID + companyfile.ExtendFileName);
                FileInfo tempFile = new FileInfo(desfileFolder + "\" + companyfile.ID + companyfile.ExtendFileName);
                tempFile.MoveTo(Path.Combine(desfileFolder, companyfile.FileName));
                //have attchement
                MaterialList materials = MaterialAdapter.Instance.LoadMaterialsByResourceID(companyfile.ID);
                if (materials.Count > 0)
                {
                    Directory.CreateDirectory(desfileattchFolder);
                    foreach (Material ma in materials)
                    {
                        string sourceAttchFullPath = RootAttchPath.Remove(RootAttchPath.Length - 1, 1);
                      
                        sourceAttchFullPath += ma.RelativeFilePath;
                        FileInfo attFile = new FileInfo(sourceAttchFullPath);
                        attFile.CopyTo(desfileattchFolder + ma.ID + attFile.Extension);
                        FileInfo tempAtt = new FileInfo(desfileattchFolder + ma.ID + attFile.Extension);
                        tempAtt.MoveTo(desfileattchFolder + ma.OriginalName);//重命名的实现
                    }
                }
            }
        }

时间: 2024-10-24 18:02:53

asp.net文件批量上传下载代码与详细说明的相关文章

asp 文件 批量上传

 关键字:asp 批量上传   asp 图片批量上传     批量上传文件    asp 上传文件      asp文件上传代码   php 文档批量上传 , 好了,我们今天看来看文件批量上传代码与方法吧,首先我们用到三个文件,upload_5xsoft.inc ,upload.asp,up.asp这三个文件,下面我们一一讲解这个三个文件,并贴出相应代码: 先来看看upload_5xsoft.inc吧,这里文件扩展名为什么为inc我就不讲了,不懂得可以到本站去搜索. <SCRIPT  RUNAT

PHP图片、文件批量上传代码

  不管是文件还是图片批量上传我们第一个是在html中做name=userfile[]这种数组变量,在php接受中我们做for ($_i=0; $_i<$_cont; $_i++)遍历这样就可以实现文件批量上传了,下面我来看一个实例 例子  代码如下   <?php session_start(); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www

Plupload功能强大的多文件批量上传插件

Plupload 是一个Web浏览器上的界面友好的文件上传模块,可显示上传进度.图像自动缩略和上传分块.可同时上传多个文件,为您的内容管理系统或是类似上传程序提供一个高度可用的上传插件. Plupload功能强大的多文件批量上传插件 Plupload这个JavaScript控件可以让你选择Adobe Flash.Google Gears.HTML5.Microsoft Silverlight.Yahoo BrowserPlus或正常表单Form等多种方法进行文件上传. Plupload还提供其它

PHP移动互联网开发笔记(5)——文件的上传下载

一.文件的上传 1.客户端设置: (1).在 标签中将enctype和method两个属性指明相应的值. Enctype="multipart/form-data"; Method="POST" (2).form表单中设置一个hidden类型的input框,其中name的值为MAX_FILE_SIZE的隐藏值 2.服务器端设置: (1).$_FILES多维数组:用于存储各种上传文件有关的信息 (2).文件上传与php配置文件的设置,如以下php.ini文件中的一些指

jquery插件uploadify实现带进度条的文件批量上传_jquery

有时项目中需要一个文件批量上传功能时,个人认为uploadify是快速简便的解决方案,分享给大家供大家参考,具体如下 先上效果图: 具体代码如下: 在页面中如下 完整页面代码 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html> <

servlet + JSP+ mysql实现文件的上传下载等

问题描述 servlet + JSP+ mysql实现文件的上传下载等 1.我想搞一个网页,可以点击一个链接便可以实现下载mysql数据库对应的word文档,还可以上传word文档到mysql库中: 2.在网页中上传图片保存到数据库,并可在上传完毕之后,直接在线观看其图片. 本人在自编一个程序,由于技术有限,不能实现以上功能,望大家能指点一下,最好能给出一份源码让我参考下. 解决方案 开源中国上的一个类似项目讲解,参考:http://www.oschina.net/question/234345

asp.net图片批量上传求助

问题描述 asp.net图片批量上传求助 选中文件后,图片先显示在页面,是否先将图片保存在虚拟目录,点击提交的时候上传到服务器回应的目录里没有就创建一个?求助大侠 解决方案 参考http://www.cnblogs.com/manongxiaobing/p/4694263.html 另外没有上床以前肯定不能保存在虚拟目录,但是你可以用js实现本地预览

求助SSH上传下载代码

问题描述 求助SSH上传下载代码请问这个应该怎么写呢??最好有个项目啊! 解决方案 解决方案二:百度一下就好了.解决方案三:百度过了都是上传的没有下载的啊..............求教高手在线等!!解决方案四:struts2实现的文件上传与下载解决方案五:先下载commons-fileupload-1.2.2.jar和commons-io-2.0.1.jar引用一下,给你看我写的一个用户上传头像,只能jpg,不然抛异常privateUseruser;privateUserServiceserv

用C#写个WinForm应用程序,如何能实现到www.docin.com的文件批量上传

问题描述 用C#写个WinForm应用程序,如何能实现到www.docin.com的文件批量上传,请各位发表下看法,或者有什么好的思路 解决方案 解决方案二:用webClient循环上传~解决方案三:能具体点吗?谢谢!!!解决方案四:我要把文件上传到他们的网站上啊.如果是只在他们网站上传的话一次只能一篇.我想批量传一下.我用C#写WinForm程序,1.第一个窗体里用一个WebBrowser控件来转到www.docin.com的网址,然后通过这个网址登陆.2.登陆过后点击一个自己设置的批量上传按