多文件上传

这是我开发过程中用涉及到的一个功能,现在备份下来。
首先是在 web.confing 中做限制上传大小配置和超时的配置, httpruntime 的节点下有 executionTimeout ,maxRequestLength两个属性。executionTimeout设置超时的时间值,默认的为90秒,如果超出这个时间,浏览器就会受到一个超时错误的通知,可以自己设置但一般不要太长啦,maxRequestLength就是设置文件的大小的,一般默认为4MB,这个太小了,我在做的过程中就是一开始没设置这个属性,测试时候传了个10MB的文件,把系统给搞死啦^_^,具体设置如下:
< httpRuntime executionTimeout = "90"maxRequestLength="20480"/>
接下来就是动态的创建,上传文件的控件,我是用一个脚本创建的,当然也可以用其他的方法,这个我在网上找过,但感觉没这个好就用这个啦,为了减轻服务器的压力,在这做了下限制上传文件的个数,最多不能超过5个。
var i=1
function addFile()
{
if (i<6)
{var str = '<BR> <input type="file" name="File" runat="server" style="width: 245px"/>'
document.getElementById('MyFile').insertAdjacentHTML("beforeEnd",str)
}
else
{
alert(" 您一次最多只能上传5个附件!" )
}
i++
}
最后就是后台的实现啦,先判断下文件的大小,别超过限制的大小,然后判断下文件的格式,然后用 Directory 的CreateDirectory()方法创建一个存放的文件夹,然后用一个for循环存就好了,具体实现如下:
#region My method ofuploadfile
///<summary>
/// Uploadfile method of method
///</summary>
protected void UpLoadFile()
{
System.Web.HttpFileCollection files = System.Web.HttpContext.Current.Request.Files;
StringBuilder strmsg = new StringBuilder("");
int ifile;
for (ifile = 0; ifile < files.Count; ifile++)
{
if (files[ifile].FileName.Length > 0)
{
System.Web.HttpPostedFile postedfile = files[ifile];
if (postedfile.ContentLength / 10240 > 10240)// 单个文件不能大于k
{
strmsg.Append(Path.GetFileName(postedfile.FileName) + "--- 不能大于k<br>" );
break;
}
string fex = Path.GetExtension(postedfile.FileName);
if (fex != ".jpg" && fex != ".JPG" && fex != ".gif" && fex != ".GIF" && fex != ".doc" && fex != ".xls" && fex != ".txt")
{
strmsg.Append(Path.GetFileName(postedfile.FileName) + "--- 文件格式不对,只能是jpg,gif,doc,xls或txt!<br>" );
break;
}
}
}
if (strmsg.Length <= 0)// 说明附件大小和格式都没问题
{
// 以下为创建附件目录
string dirpath = Server.MapPath(" 上传附件" );
if (Directory.Exists(dirpath) == false)
{
Directory.CreateDirectory(dirpath);
}
for (int i = 0; i < files.Count; i++)
{
System.Web.HttpPostedFile myFile = files[i];
string FileName = "";
string FileExtention = "";
FileName = System.IO.Path.GetFileName(myFile.FileName);
if (FileName.Length > 0)// 有文件才执行上传操作再保存数据库
{
FileExtention = System.IO.Path.GetExtension(myFile.FileName);// 得到文件得后缀名
string ppath = dirpath + @"\" + FileName ;
myFile.SaveAs(ppath);
ticket.IntAttachment(TBTicketNumber.Text, FileName, ppath, tbAttachment.Text);// 插入数据库
}
}
lbMess.Text = " 恭喜,工单创建成功!" ;
}
else
{
lbMess.Text = strmsg.ToString();
lbMess.Visible = true;
}
}
#endregion

你可能感兴趣的:(Web,浏览器,脚本)