您的位置:首页 > 其它

上传图片用图片文件的对象hash哈希值判断图片是否一样,避免重复提交相同的图片到服务器中

2017-08-31 22:55 746 查看
上传图片用图片文件的对象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);
}
}
}


做一个记录,没有高水平技术,简简单单写个博客!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: