读书人

asp.net怎样实现批量上载文件(非打包

发布时间: 2012-08-29 08:40:14 作者: rapoo

asp.net怎样实现批量下载文件(非打包形式下载)
我想实现的是一个一个的下载。
比如我有一个文件列表。通过checkbox选择。通过单击下载按钮下载选中文件。
百度到都是用打包形式实现批量下载。
这是我自己写的代码,但是点击下载后只能下载一个文件。单步调试,循环只执行一次。不知道是什么原因。

C# code
 string Name;        string Path;        protected void Button2_Click(object sender, EventArgs e)        {            foreach (Control control in Panel1.Controls)            {                try                {                    if (((CheckBox)control).Checked)                    {                      //获取选择文件的相对路径。我将文件的相对路径写在了CssClass里面                        Path = ((CheckBox)control).CssClass;                        string[] path = Path.Split('/');                        Name = path[path.Length - 1];                        download(Path, Name);                    }                }                catch (Exception)                { continue; }            }        }        private void download(string Path, string Name)        {            //用户下载文件时保存文件使用的默认命名            string downLoadFileName = Name;            //设定响应类型为下载            this.Response.ContentType = "application/x-zip-compressed";            //获取下载文件在服务器端的物理路径            string downLoadPath = this.Server.MapPath(Path);            //添加响应头标示信息  this.Server.UrlPathEncode对下载文件名进行编码 防止文件名乱码            this.Response.AddHeader("Content-Disposition", string.Format("attachment;filename={0}", this.Server.UrlPathEncode(downLoadFileName)));            //下载文件输出            this.Response.TransmitFile(downLoadPath);            this.Response.End();        }


具体怎样实现?是用多线程吗?求大大们指教。谢谢

[解决办法]
不知道是什么原因。》?

这种方法只能下载一个文件,就是原因,一次只能输出一个文件流

你要下载多个,又不想打包下载,你只能使用 iframe


<iframe src="down.aspx?file=f1" style="display:none"></iframe>
<iframe src="down.aspx?file=f2" style="display:none"></iframe>
<iframe src="down.aspx?file=f3" style="display:none"></iframe>
<iframe src="down.aspx?file=f4" style="display:none"></iframe>





[解决办法]
提供一个思路:

可以循环调用JS方法输出文件路径并打开
[解决办法]
这个问题我也研究了好长时间,一次只能输出一个文件流;最后还是打包下载了。哎

读书人网 >asp.net

热点推荐