文件在上传过程中发生异常服务器端的散列值,上传图片用图片文件的对象hash哈希值判断图片是否一样,避免重复提交相同的图片到服务器中...

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

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

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

前端:要用到一个插件,点击下载企业用户后台管理系统 - 谭人才招聘系统

后端:// 上传企业logo

//public ActionResult UploadLogo()

{

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 = 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);

}

// 计算文件大小

/public string FileSize(long bytes)

{

long kblong = 1024;

long mblong = 1024 * 1024;

if (bytes 

return decimal.Round(decimal.Divide(bytes, kblong), 2).ToString() + "KB";

else

return decimal.Round(decimal.Divide(bytes, mblong), 2).ToString() + "MB";

}

获取文件的hash哈希值方法:// 计算文件的hash值 用于比较两个文件是否相同

//文件路径///文件hash值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);

}

}

}

做一个记录,没有高水平技术,简简单单写个博客!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值