上传图片用图片文件的对象hash哈希值判断图片是否一样,避免重复提交相同的图片到服务器中
2017-08-31 22:55
746 查看
上传图片用图片文件的对象hash哈希值判断图片是否一样,避免重复提交相同的图片到服务器中
获取文件的hash哈希值方法:
做一个记录,没有高水平技术,简简单单写个博客!
/// <summary> /// 上传企业logo /// </summary> /// <returns></returns> public ActionResult UploadLogo(string comid) { HttpFileCollection files = System.Web.HttpContext.Current.Request.Files; if (files.Count == 0) return Json("没有没文件", JsonRequestBehavior.AllowGet); MD5 hash = new MD5CryptoServiceProvider(); /**计算指定stream对象的哈希值**/ byte[] bytehashValue = hash.ComputeHash(files[0].InputStream); var HashData = BitConverter.ToString(bytehashValue).Replace("-", ""); var FileExtension = Path.GetExtension(files[0].FileName); var filename = comid + "_" + HashData + FileExtension; var virtualpath = string.Format("/Upload/Logo/{0}/{1}", DateTime.Now.ToString("yyyyMMdd"), filename); //将虚拟路劲转换成物理路劲 var fullpath = Server.MapPath(virtualpath); var path = Path.GetDirectoryName(fullpath); if (!Directory.Exists(path)) Directory.CreateDirectory(path); if (!System.IO.File.Exists(fullpath)) files[0].SaveAs(fullpath); var FileSize = this.FileSize(files[0].ContentLength); return Json(new { FileName = filename, FilePath = virtualpath, FileSize = FileSize }, "text/html", JsonRequestBehavior.AllowGet); } /// <summary> /// 计算文件大小 /// </summary> /// <param name="bytes"></param> /// <returns></returns> public string FileSize(long bytes) { long kblong = 1024; long mblong = 1024 * 1024; if (bytes < kblong) return decimal.Round(decimal.Divide(bytes, kblong), 2).ToString() + "KB"; else return decimal.Round(decimal.Divide(bytes, mblong), 2).ToString() + "MB"; }
获取文件的hash哈希值方法:
/// <summary> /// 计算文件的hash值 用于比较两个文件是否相同 /// </summary> /// <param name="filePath">文件路径</param> /// <returns>文件hash值</returns> public static string GetFileHash(string filePath) { //创建一个哈希算法对象 using (HashAlgorithm hash = HashAlgorithm.Create()) { using (FileStream file = new FileStream(filePath, FileMode.Open)) { //哈希算法根据文本得到哈希码的字节数组 byte[] hashByte= hash.ComputeHash(file); //将字节数组装换为字符串 return BitConverter.ToString(hashByte); } } }
做一个记录,没有高水平技术,简简单单写个博客!
相关文章推荐
- 七牛判断上传图片文件是否重复
- php判断上传的Excel文件中是否有图片及PHPExcel库认识
- C#判断上传文件是否是图片,防止木马上传
- C#判断上传文件是否是图片以防止木马上传的方法
- JAVA WEB 判断上传的文件是否是图片
- php判断上传的Excel文件中是否有图片及PHPExcel库认识
- PHP上传图片时判断上传文件是否为可用图片的方法
- PHP上传图片时判断上传文件是否为可用图片的方法
- 判断上传的文件是否为图片
- asp.net 上传判断文件是否为图片
- C#判断上传文件是否是图片,防止木马上传
- 判断上传的图片文件格式是否合法--不是用后缀做的判断
- 在作图片上传时判断文件是否是较长片类型 检测到是否是改后缀名图片
- C#判断上传文件是否是图片以防止木马上传的方法
- 文件上传时判断是否为图片
- 判断上传文件是否是图片文件
- HashSet 中储存先判断对象的hash值 如果一样 在调用 对象equals方法判断是否是同一个对象
- 如何判断上传的图片是否是正真的图片 防止上传恶意的非图片文件
- asp.net FileUpload 判断上传文件是否为图片
- php判断上传的文件图片是否为空