“上传图片到服务器”之静态页面与一般处理程序
来源:互联网 发布:js 函数触发submit 编辑:程序博客网 时间:2024/05/17 08:30
注意:服务器端不准用 \\ 必须用 /,如果用\\个会出现很多不必要的麻烦,例如用\\在给用jquery给div设置背景图片时就会出错,大家甚用。
上传文件到服务器,首先在前端判断上传的这个文件是否符合某种规则,如果不符合就不会提交到服务器,如果符合就会提交到服务器,在服务器还有一层判断,这样更加安全。
1、在网站项目中新建Upload文件夹、Handlers文件夹、Tools文夹、Pages文件夹、Js文件夹
Upload文件夹--------------------------------中用于存放上传的文件;
Handlers文件夹-----------------------------中用来存放一般处理程序;
Tools文件夹----------------------------------中用来存放服务器端的工具类
Pages文件夹---------------------------------中用来存放展示的页面
JS文件夹---------------------------------------中用来存放一些js文件
2、在Js文件夹中新建MyTool.js
//判断一个文件是不是一个图片function IsPicture(filename) { var result = false; //如果filename可用,并且不为空字符串 if (filename != null && typeof (filename) != undefined && filename != '') { //当前文件扩展名 var ext = filename.substr(filename.lastIndexOf('.') + 1).toLowerCase(); //图片的各种扩展名数组 var files = 'bmp,jpg,png,tiff,gif,pcx,tga,exif,fpx,svg,psd,cdr,pcd,dxf,ufo,eps,ai,raw'.split(','); //如果此扩展名属于图片扩展名则修改标记为true for (var i = 0; i < files.length; i++) { if (files[i] == ext) { result = true; break; } } } return result;}
3、在Pages文件夹中新建ShowUpload.htm
Html代码主要是展示
<form action="/Handlers/UploadFile.ashx" method="post" enctype="multipart/form-data"> 请选择文件:<input type="file" name="pfile" id="pfile" /><input type="submit" id="btnsubmit"value="上传" /><span id="lblMsg"></span></form>前端需要判断上传的文件是不是图片
<script src="/JS/MyTool.js" type="text/javascript"></script><script type="text/javascript"> window.onload = function () { gosubmit(); } function gosubmit() { document.getElementById('btnsubmit').onclick = function () { var filename = document.getElementById('pfile').value; if (!IsPicture(filename)) { document.getElementById('lblMsg').innerHTML='请上传图片'; return false; } return true; } }</script>
4、在Tools文件夹中新建MyTool.cs
public class MyTool{ #region ISPicture是判断一个文件是不是图片 public static bool ISPicture(HttpPostedFile file) { bool result = false; string[] exts = "bmp,jpg,png,tiff,gif,pcx,tga,exif,fpx,svg,psd,cdr,pcd,dxf,ufo,eps,ai,raw".Split(new char[] { ',' }); List<string> extList = new List<string>(); extList.AddRange(exts); string ext = Path.GetExtension(file.FileName).Substring(1).ToLower(); if(extList.Contains(ext)) { result = true; } return result; } #endregion #region GetMD5拿一个流的MD5值 public static string GetMD5(Stream stream) { string result = string.Empty; MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider(); byte[] bytes = md5.ComputeHash(stream); StringBuilder sb=new StringBuilder(); for (int i = 0; i < bytes.Length; i++) { sb.Append(bytes[i].ToString("X2")); } result = sb.ToString(); return result; } #endregion #region CreateDirectory先去判断一个文件夹存不存在,如果不存在的话新建它 public static void CreateDirectory(string path) { if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } } #endregion}
5、在Handlers文件夹中新建UploadFile.ashx
public void ProcessRequest(HttpContext context){ context.Response.ContentType = "text/plain"; HttpPostedFile pfile = context.Request.Files["pfile"]; //判断是不是图片 if (!MyTool.ISPicture(pfile)) { return; } //准备新的文件名称,准备新的保存路径 string newfilename = MyTool.GetMD5(pfile.InputStream) + Path.GetExtension(pfile.FileName); string newpath = context.Request.MapPath("/Upload/") + DateTime.Now.ToString("yyyyMMdd"); MyTool.CreateDirectory(newpath); string path = Path.Combine(newpath, newfilename); //执行保存操作 pfile.SaveAs(path); context.Response.Write("上传成功");}
- “上传图片到服务器”之静态页面与一般处理程序
- ajax与一般处理程序上传图片
- html借助一般处理程序实现文件上传到服务器
- 一般处理程序上传文件到Web服务器
- ASP_一般处理程序_图片上传
- 一般处理程序多图片上传
- ASP.NET学习笔记(二)——一般处理程序之图片上传
- html5 file调用一般处理程序上传图片
- 上传图片及添加水印一般处理程序的
- 微信小程序上传图片到服务器
- “上传图片到服务器”之WebForm
- Web开发之程序上传到服务器
- 上传图片到服务器
- 上传图片到服务器
- 图片上传到服务器
- 图片上传到服务器
- 图片上传到服务器
- struts2 图片上传到服务器并显示在页面
- 配置WAS数据源启动报错问题
- 混合高斯背景建模程序分析
- 策略模式、中介者模式和模板方法模式
- web service超时问题
- 准备工作—PPT的工作区域
- “上传图片到服务器”之静态页面与一般处理程序
- 开发web项目遇到的问题
- 让笔记本成为无线路由
- ENVI下植被指数模型详解
- C ++ sort()与stable_sort()
- jvm的几个运行时数据区域
- [算法导论]第二章《算法基础》
- Choosing the right estimator
- 关于GDAL180中文路径不能打开的问题分析与解决