一般处理程序上传图片
(1). 首先创建一个用于上传图片的HTML模板,命名为ImageUpload.html:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <!DOCTYPE html> <html> <head> <meta http-equiv= "Content-Type" content= "text/html; charset=utf-8" /> <title></title> <meta charset= "utf-8" /> </head> <body> <!--文件上传必须设置enctype= "multipart/form-data" --> <form method= "post" enctype= "multipart/form-data" action= "ImageUpload.ashx" > <input type= "file" name= "imgFile" /> <input type= "submit" value= "上传" /> </form> </body> </html> |
模板中包含两个input标签,类型分别为“file”和“submit”,其中,form表单的method属性必须为“post”,enctype为“multipart/form-data”。
(2). 在ImageUpload.html模板中判断一下所上传的文件是否为图片:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <script src= "../scripts/jquery-1.12.4.min.js" ></script> <!--如果监听到上传的文件的后缀不是图片,那就将file得到的内容设为空--> <script type= "text/javascript" > $(function () { $( ":file" ).change(function () { var fileName = $( this ).val(); var ext = fileName.substr(fileName.lastIndexOf( '.' )); if (ext == ".jpeg" || ext == ".jpg" || ext == ".png" || ext == ".gif" ) { return true ; } else { $( this ).val( "" ); } }); }); </script> |
(3). 新建一个名为ImageUpload.ashx的一般处理程序,为保证上传的文件是图片,需要在后台再次判断一下所传文件的格式(因为浏览器中可以改前台代码):
using System; using System.IO; using System.Web; namespace ThreeLayerWebDemo.FileUpload { /// <summary> /// ImageUpload 的摘要说明 /// </summary> public class ImageUpload : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/html"; //context.Response.Write("Hello World"); //后台拿到上传来的图片(拿到名为imgFile的input标签的文件) var file =context.Request.Files["imgFile"]; //后台也要对拿到的数据是否为图片进行校验(因为前台可以通过浏览器改代码,前台校验完了需要后台再拦截一下) var ext= Path.GetExtension(file.FileName); if (!(ext==".jpeg"||ext==".jpg"||ext==".png"||ext==".gif")) { context.Response.Write("shit,你传的不是图片"); context.Response.End(); } else { //上传的文件保存到目录(为了保证文件名不重复,加个Guid) string path = "/Upload/" + Guid.NewGuid().ToString() + file.FileName; file.SaveAs(context.Request.MapPath(path));//必须得是相对路径 //把图片显示到前端让用户看得到 string str = string.Format("<html><head></head><body><img src='{0}'/></body></html>", path);//必须得是绝对路径!!!! context.Response.Write(str); } } public bool IsReusable { get { return false; } } } }
转自:https://blog.csdn.net/asd358924810/article/details/78243446
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· [翻译] 为什么 Tracebit 用 C# 开发
· 腾讯ima接入deepseek-r1,借用别人脑子用用成真了~
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· DeepSeek崛起:程序员“饭碗”被抢,还是职业进化新起点?
· RFID实践——.NET IoT程序读取高频RFID卡/标签