html前台:
<body> <form id="form1" enctype="multipart/form-data" method="post" action="Handler1.ashx"> <input type="file" name="myfile" value="123" /><br/> <input type="submit" name="file" /> </form> </body>
注意:enctype="multipart/form-data"设置后才能够提交服务器(一般处理程序) method="post"的设置
一般处理程序ashx:
public class Handler1 : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain"; //接收客户端上传文件 HttpFileCollection fct = context.Request.Files; if (fct.Count > 0) { HttpPostedFile hpf = fct[0]; //获取文件扩展名 string ext = System.IO.Path.GetExtension(hpf.FileName); Random red = new Random(); string date = DateTime.Now.ToString("yyMMddhhmmss"); string filename = context.Request.MapPath("~/Image/" + date + red.Next(1000, 10000) + ext); //string Filename = System.IO.Path.GetFileName(hpf.FileName); //保存文件 hpf.SaveAs(filename); context.Response.Write("上传文件成功"); } else { context.Response.Write("请上传文件"); } } public bool IsReusable { get { return false; } } }
这个不能防止空文件上传和格式控制:(图片格式可也用js代码判断,基于给户交互效果)
修改后:
public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain"; //接收客户端上传文件 HttpFileCollection fct = context.Request.Files; if (fct.Count > 0) { HttpPostedFile hpf = fct[0]; if (hpf.ContentLength > 0)//防止用户空文件上传 { if (hpf.ContentType == "image/jpeg" || hpf.ContentType == "image/png") { //获取文件扩展名 string ext = System.IO.Path.GetExtension(hpf.FileName); Random red = new Random(); string date = DateTime.Now.ToString("yyMMddhhmmss"); string filename = context.Request.MapPath("~/Image/" + date + red.Next(1000, 10000) + ext); //string Filename = System.IO.Path.GetFileName(hpf.FileName); //保存文件 hpf.SaveAs(filename); context.Response.Write("上传文件成功"); } else { context.Response.Write("禁止上传!"); } } else { context.Response.Write("上传失败。"); } } else { context.Response.Write("请上传文件"); } }
js控制:
<script type="text/javascript"> function checkext() { var file = document.getElementById("file").value; var ext=file.substr(file.lastIndexOf(".")+1); if (ext.toLowerCase() == "jpg" || ext.toLowerCase() == "png") { return true; } else { alert("禁止上传"); return false; } } </script>
控制文件上传大小:
在web.confige中<system.web>节点下配置:
<httpRuntime maxRequestLength="1024000"/>