asp.net上传多个文件
上传一个或者多个文件
需要把form写成这样:
<form method="post" id="form1" onsubmit="/*postForm();return false;*/" action="Default.aspx" style="margin:0px;" runat="server" enctype="multipart/form-data">
选择上传图片:
<br />
<span id="FileList"><input type="file" size="50" name="File" /></span>
<br />
<a href='#' onclick="addFile(10)" ><font color='blue'>增加更多图片</font></a>(每次最多上传10张图片)
<br/>
<asp:Button ID="btnSave" runat="server" Text="开始上传" height='30px' onclick="btnSave_Click"></asp:Button>
<input type="hidden" id="DelID" name="DelID" />
</form>
<script type="text/javascript" language="javascript">
function addFile(max)
{
var file = document.getElementsByName("File");
if (file.length < max) {
var filebutton = '<br /><input type="file" size="50" name="File" />';
document.getElementById('FileList').insertAdjacentHTML("beforeEnd", filebutton);
}
else {
alert('每次最多上传' + max + '张图片')
}
}
</script>
其中, document.getElementById('FileList').insertAdjacentHTML("beforeEnd", filebutton);
也可以写成:
document.getElementById('FileList').innerHTML += filebutton
注意不能少enctype="multipart/form-data",否则后台取不到文件
后台:
int uploadcount = 0;
try
{
///获取上载文件的列表
HttpFileCollection fileList = HttpContext.Current.Request.Files;
if (fileList == null) return;
///上载文件列表中的每一个文件
for (int i = 0; i < fileList.Count; i++)
{ ///获取当前上载的文件
HttpPostedFile postedFile = fileList[i];
if (postedFile == null)
{
continue;
}
///获取上载文件的文件名称
String fileExt = (System.IO.Path.GetExtension(postedFile.FileName)).ToString().ToLower();
String strImageName = "pictures\\" + System.Guid.NewGuid().ToString();
if (string.IsNullOrEmpty(fileExt) == true)
{
continue;
}
//保存上传图片到服务器
postedFile.SaveAs(Server.MapPath(strImageName + fileExt));
(new Picture()).UploadPicture("", strImageName + fileExt);
uploadcount++;
}
if (uploadcount>0)
{
Response.Redirect("UploadSucceed.aspx?succeed=true");
}
else
{
Response.Write("<script language=javascript>alert(\'系统提示:请选择文件!\');</script>");
}
}
catch (Exception ex)
{
Response.Write("<script language=javascript>alert(\'系统警告:上传图片失败!\');</script>");
}
如果就上传一个文件,则file元素加上runat='server',也可以直接在后台访问:
////获取图片文件扩展名
//String fileExt = (System.IO.Path.GetExtension(fileImage.PostedFile.FileName)).ToString().ToLower();
//String strImageName = "pictures\\" + System.Guid.NewGuid().ToString();
//try
//{
// if (fileImage.PostedFile.ContentLength != 0) //判断选取对话框选取的文件长度是否为0
// {
// //保存上传图片到服务器
// fileImage.PostedFile.SaveAs(Server.MapPath(strImageName + fileExt));
// (new Picture()).UploadPicture("", strImageName + fileExt);
// Response.Redirect("UploadSucceed.aspx?succeed=true");
// }
// else
// {
// Response.Write("<script language=javascript>alert(\'系统提示:请选择文件!\');</script>");
// }
//}
//catch (Exception ex)
//{
// Response.Write("<script language=javascript>alert(\'系统警告:上传图片失败!\');</script>");
//}