博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
asp.net 动态添加多附件上传.
阅读量:4963 次
发布时间:2019-06-12

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

最近有人问起动态多文件上传,想要做到类似于邮箱添加附件的效果,这个功能其实比较简单,就是往form中添加file元素。在用户选择完文件后,再添加一个file控件,由于file控件过多,视觉上不好看,所以隐藏之前的控件,保持页面上只有一个控件,同时把文件名添加到附件列表中。

 注意:页面上初始的file控件必须有runat="server"标志。也就是说,这个页面上必须至少有一个runat="server"的file控件,否则后台接收不到Request.Files。

<
FORM 
id
="form1"
 runat
="server"
>
            
<
DIV 
id
="div1"
>
                
<
INPUT 
ID
="File1"
 TYPE
="file"
 NAME
="File1"
 runat
="server"
>
                
<
INPUT 
TYPE
="button"
 VALUE
="添加附件"
 onclick
="javascript:AddFile();"
>
                
<
INPUT 
TYPE
="button"
 VALUE
="删除附件"
 onclick
="javascript:RemoveFile();"
>
                
<
ASP:LISTBOX 
id
="ListBox1"
 Width
="200px"
 Height
="100px"
 runat
="server"
></
ASP:LISTBOX
>
                
<
ASP:BUTTON 
id
="Button1"
 runat
="server"
 Text
="保存"
 Width
="60px"
></
ASP:BUTTON
>
            
</
DIV
>
            
<
ASP:LITERAL 
ID
="lResult"
 Runat
="server"
></
ASP:LITERAL
>
                      
</
FORM
>

 

<
SCRIPT language
=
"
javascript
"
>
<!--
 
function
 AddFile()  {            
var
 file 
=
 document.getElementById(
"
div1
"
).firstChild;     
if
(file.value 
==
 
""
)     {         alert(
"
请选择文件!
"
);         
return
;     }          
var
 ary 
=
 file.value.split(
"
/
"
);     
var
 filename 
=
 ary[ary.length
-
1
];          
var
 bAddFile 
=
 
true
;     
if
(CheckOptionsExists(filename,document.getElementById(
"
ListBox1
"
)))     {                  alert(
"
文件已经存在列表中!
"
);         div1.removeChild(file);         bAddFile 
=
 
false
;              }               
var
 f 
=
 document.createElement(
"
input
"
);     f.type 
=
 
"
file
"
;     f.name 
=
 
"
file
"
         div1.insertBefore(f,div1.firstChild);          
if
(
!
bAddFile)     {         
return
    }     
var
 o 
=
 
new
 Option();     o.innerText 
=
 filename;     o.value 
=
 file.uniqueID;     document.getElementById(
"
ListBox1
"
).appendChild(o);          file.style.display 
=
 
"
none
"
;                  }    
function
 RemoveFile()  {     
var
 lst 
=
 document.getElementById(
"
ListBox1
"
);     
if
(lst.selectedIndex 
==
 
-
1
)     {         alert(
"
请选择要删除的附件!
"
);         
return
;     }          
var
 id 
=
 lst.value;     div1.removeChild(document.all[id]);     lst.removeChild(lst.options[lst.selectedIndex]);     div1.firstChild.style.display 
=
 
""
;        }    
//
检查选项是否存在.
 
function
 CheckOptionsExists(value,ddl)  {     
for
(
var
 i
=
0
;i
<
ddl.options.length;i
++
)     {         
if
(ddl.options[i].innerText 
==
 value)         {             
return
 
true
;         }     }     
return
 
false
;  }      
//
-->
        
</
SCRIPT
>

 

 

后台代码就比较简单了。没有过多的处理,只是一个简单的保存。

 

private
 
void
 Button1_Click(
object
 sender, System.EventArgs e)         {                           
for
(
int
 i
=
0
;i
<
Request.Files.Count;i
++
)             {                 
if
(Request.Files[i].ContentLength 
>
0
)                 {                     
string
 filename 
=
 System.IO.Path.GetFileName(Request.Files[i].FileName);                     Request.Files[i].SaveAs(Server.MapPath(filename));                     
this
.ListBox1.Items.Add(
new
 ListItem(filename,filename));                 }
                
this
.lResult.Text 
=
 
"
保存成功!
"
;             }                      }

转载于:https://www.cnblogs.com/zhwl/p/3556900.html

你可能感兴趣的文章
《Android深度探索卷一》读书笔记一
查看>>
【C语言】Coursera课程《计算机程式设计》台湾大学刘邦锋——Week2课堂笔记
查看>>
Hibernate JPA 如何使用SQL文直接查询
查看>>
synchronized的原理,以及其中的偏向锁
查看>>
Uboot环境变量分析
查看>>
Can we call an undeclared function in C++?
查看>>
oracle荣誉acd_oracle函数
查看>>
adb 静默安装_android开发,关于android app实现静默安装自己(系统签名)
查看>>
mbio期刊拒稿率_科学网—投不出去的论文续:终于被接收了 - 赵广的博文
查看>>
additemdecoration重复_为RecyclerView设置相同尺寸的分割线——不止简单的自定义ItemDecoration...
查看>>
j循环赋予li id_北理工黄佳琦教授:金属基预催化剂在Li–S电池中的电化学相演变...
查看>>
c调用python代码找不到模块_想用Python调用C++代码?Pytorch原来是这样做的
查看>>
cef 3.2 启动速度优化_新区炼钢厂干法除尘控制系统优化改造
查看>>
avd已创建模拟手机 点击开始没反应_如何从零开始搭建属于你自己的博客
查看>>
中文拼写纠错_美国孩子背单词有多么疯狂!娃参加拼写比赛后终于知道了
查看>>
pytdx 获取板块指数_一季度哪个是增强指数王中王?
查看>>
timimg学习数据删了_HexMap学习笔记(一)——创建六边形网格
查看>>
label里面的文字换行_Android 模仿微信读书左右对齐的文字效果
查看>>
电子增稳云台_DJI 大疆创新发布灵眸手机云台3,采用可折叠设计
查看>>
nodejs 点击按钮下载_nodejs部署到iis,详解iis如何部署运行nodejs
查看>>