1.内闭式(RUNAT SERVER方式)
这种方式是目前大多数人使用的一种,通过事件驱动来实现文件上传处理,Form及File Field需设置为Runat Server
代码如下:
void Button1_Click(object Source, EventArgs e) {
if (File1.PostedFile != null) {
//获取上传文件类型//
string FileType=File1.PostedFile.ContentType.ToString();
//检查是否允许上传,当前只允许上传jpg和gif格式文件//
if (FileType=="image/pjpeg" || FileType=="image/gif")
{
//获取文件名//
string FileName=File1.PostedFile.FileName.ToString();
//获取扩展名//
string FileExt =FileName.Substring(FileName.LastIndexOf("."));
//重新设置一个文件名//
DateTime now = DateTime.Now;
string FrontFileName=now.ToFileTimeUtc()+File1.PostedFile.ContentLength.ToString();
FileName="/Upload/"+FrontFileName+FileExt;
try {
//文件保存
File1.PostedFile.SaveAs(Server.MapPath(FileName));
Response.Write("上传成功");
}
catch (Exception exc) {
Response.Write("上传错误,原因:+"exc.ToString()"");
}
}
}
<form enctype="multipart/form-data" runat="server">
选择要上传得文件<input id="File1" type=file runat="server">
<input type=button id="Button1" value="点击开始上传" OnServerClick="Button1_Click" runat="server">
</form>
之所以称为内闭式是因为该种实现方式必须在同一个aspx文件内完成,有一定限制,但安全性较高。
2.开放式(Submit Form方式)
该方式可以支持由其他页面提交,自由性较大,代码如下:
upload.aspx
<form name="form1" action="Save.aspx" method="post" enctype="multipart/form-data">
<INPUT type="file" id="File1" name="File1">
<input type="submit" name="submit" value="保存">
</form>
save.aspx
private void Page_Load(object sender, System.EventArgs e)
{
if( Request.Files.Count == 0 ) {
Response.Write("<script>alert('请选择上传文件!');</script>");
Response.End();
return;
}
System.Web.HttpPostedFile file = Request.Files[0];
String fileName = Request["fileName"];
String save_path = "./attached/";
String ext = System.IO.Path.GetExtension( file.FileName ).ToLower();
Response.Write(ext);
if( !System.IO.Directory.Exists( Server.MapPath( save_path ) ) )
System.IO.Directory.CreateDirectory( Server.MapPath( save_path ) );
if( ext == ".jpg" || ext == ".gif" || ext == ".bmp" || ext == ".png" ) {
file.SaveAs( Server.MapPath( save_path + fileName ) );
Response.Write("<script type=\"text/javascript\">parent.KindInsertImage('" + save_path + fileName + "','" + Request["imgWidth"] + "','" + Request["imgHeight"] + "','" + Request["imgBorder"] + "');</script>'");
Response.End();
}
else {
Response.Write("<script>alert('文件格式不支持!');</script>");
Response.End();
}
}
只需弄清楚 HttpPostedFile和HttpFileCollection这两个对像,写批量文件上传就不是一件难事了。