博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Asp.net 2.0 用 FileUpload 控件实现多文件上传 用户控件(示例代码下载)
阅读量:6260 次
发布时间:2019-06-22

本文共 3243 字,大约阅读时间需要 10 分钟。

学习, And 整理了一下.

(一). 示例图片

     

(二). 示例代码

 

  1
public
 partial 
class
 UpMultiFileControl2 : System.Web.UI.UserControl
  2
{
  3
    
protected
 
void
 Page_Load(
object
 sender, EventArgs e)
  4
    
{
  5
        
if
 (
!
Page.IsPostBack)
  6
        
{
  7
            SaveCurrentPageFileControls();
  8
        }
  9
    }
 10
    
protected
 
void
 btAddFile_Click(
object
 sender, EventArgs e)
 11
    
{
 12
        AddOneFileControl();
 13
    }
 14
 15
    
/**/
///
 
<summary>
 16
    
///
 添加一个上传文件控件
 17
    
///
 
</summary>
 18
    
private
 
void
 AddOneFileControl()
 19
    
{
 20
        ArrayList al 
=
 
new
 ArrayList();
 21
        
this
.tbFiles.Rows.Clear();
 22
        GetFileControlsFromSession();        
 23
        HtmlTableRow htr 
=
 
new
 HtmlTableRow();
 24
        HtmlTableCell htc 
=
 
new
 HtmlTableCell();        
 25
        htc.Controls.Add(
new
 FileUpload());
 26
        htr.Controls.Add(htc);
 27
        
this
.tbFiles.Rows.Add(htr);
 28
        SaveCurrentPageFileControls();
 29
    }
 30
 31
    
/**/
///
 
<summary>
 32
    
///
 读取缓存中存储的上传文件控件集
 33
    
///
 
</summary>
 34
    
private
 
void
 GetFileControlsFromSession()
 35
    
{
 36
        ArrayList al 
=
 
new
 ArrayList();       
 37
        
if
 (Session[
"
FilesControls
"
!=
 
null
)
 38
        
{
 39
            al 
=
 (System.Collections.ArrayList)Session[
"
FilesControls
"
];
 40
            
for
 (
int
 i 
=
 
0
; i 
<
 al.Count; i
++
)
 41
            
{
 42
                HtmlTableRow htr1 
=
 
new
 HtmlTableRow();                
 43
                HtmlTableCell htc1 
=
 
new
 HtmlTableCell();
 44
                htc1.Controls.Add((System.Web.UI.WebControls.FileUpload)al[i]);
 45
                htr1.Controls.Add(htc1);
 46
                
this
.tbFiles.Rows.Add(htr1);
 47
            }
 48
        }
 49
    }
 50
    
 51
    
/**/
///
 
<summary>
 52
    
///
 保存当前页面上传文件控件集到缓存中
 53
    
///
 
</summary>
    
 54
    
private
 
void
 SaveCurrentPageFileControls()
 55
    
{        
 56
        ArrayList al 
=
 
new
 ArrayList();        
 57
        
foreach
 (Control controlTR 
in
 
this
.tbFiles.Controls)
 58
        
{
 59
            
if
 (controlTR.GetType().ToString() 
==
 
"
System.Web.UI.HtmlControls.HtmlTableRow
"
)
 60
            
{
 61
                HtmlTableCell htc 
=
 (HtmlTableCell)controlTR.Controls[
0
];
 62
                
foreach
 (Control controlFileUpload 
in
 htc.Controls)
 63
                
{
 64
                    
if
 (controlFileUpload.GetType().ToString() 
==
 
"
System.Web.UI.WebControls.FileUpload
"
)
 65
                    
{
 66
                        FileUpload tempFileUpload 
=
 (FileUpload)controlFileUpload;
 67
                        al.Add(tempFileUpload);
 68
                    }
 69
                }
 70
            }
            
 71
        }
  
 72
        Session.Add(
"
FilesControls
"
, al);
 73
    }
 74
 75
    
protected
 
void
 btUpFiles_Click(
object
 sender, EventArgs e)
 76
    
{
 77
        UpLoadFiles();
 78
    }
 79
 80
    
/**/
///
 
<summary>
 81
    
///
 上传文件操作
 82
    
///
 
</summary>
 83
    
private
 
void
 UpLoadFiles()
 84
    
{
 85
        
string
 filepath 
=
 Server.MapPath(
"
./
"
)
+
"
UploadFiles
"
;
 86
        
 87
        HttpFileCollection uploadedFiles 
=
 Request.Files;       
 88
        
for
 (
int
 i 
=
 
0
; i 
<
 uploadedFiles.Count; i
++
)
 89
        
{    
 90
           HttpPostedFile userPostedFile 
=
 uploadedFiles[i];        
 91
           
try
 92
           
{    
 93
              
if
 (userPostedFile.ContentLength 
>
 
0
 )
 94
              
{  
 95
                 userPostedFile.SaveAs(filepath 
+
 
"
\\
"
 
+
 System.IO.Path.GetFileName(userPostedFile.FileName));
 96
                 Response.Write(
"
已上传文件: \
""
 + filepath +
"
\\
"
+ userPostedFile.FileName +
"
\
"
<br><br>
"
 );                                   
 97
              }
    
 98
           }
 
 99
           
catch
100
           
{
101
               Response.Write(
"
上传文件: \
""
 + userPostedFile.FileName +
"
\
"
出错!
"
);
102
           }
    
103
       }
104
       
if
 (Session[
"
FilesControls
"
!=
 
null
)
105
       
{
106
           Session.Remove(
"
FilesControls
"
);
107
       }
108
    }
    
109
}

 

(三). 改变上传文件大小和时间限制

       <httpRuntime>

            executionTimeout="110"              //允许上传文件最大等待时间
            maxRequestLength="4096"        //上传文件大小,默认为4M
       </httpRuntime>

       上传文件大小是由上面两个参数所决定的.  涉及到安全因素,最好不要设得太大.      

(四). 示例源代码下载

      

(五).控件缺点

       由于安全原因, 用服务端控件实现,回发时选择的文件不能够保存.

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=699244

转载于:https://www.cnblogs.com/hdjjun/archive/2008/06/17/1223922.html

你可能感兴趣的文章
深入理解 Java 动态代理机制
查看>>
Go基础系列:简单数据类型
查看>>
[UWP]合体姿势不对的HeaderedContentControl
查看>>
使用RSA加密在Python中逆向shell
查看>>
MS UI Automation
查看>>
Android开发指南(41) —— Searchable Configuration
查看>>
现代软件工程 怎么教好课 (读书笔记)
查看>>
磁盘fat32转NTFS
查看>>
关于和技术人员交流的一二三
查看>>
Ubuntu10下MySQL搭建Amoeba系列(文章索引)
查看>>
产生sdp文件供DSS使用
查看>>
《洛克菲勒留给儿子的38封信》 第五封:要有竞争的决心
查看>>
STL vector vs list function comparison:
查看>>
应用服务器和web server 的区别
查看>>
Libevent笔记
查看>>
mycelipse之安装SVN1.6.5(转载)
查看>>
怎样把数据汇到Excel中的心得经验
查看>>
状态键盘完美适应iOS中的键盘高度变化
查看>>
Linux下oracle11g 导入导出操作详细
查看>>
每日英语:When Computer Games May Keep The Brain Nimble
查看>>