上传图片用图片文件的对象hash哈希值判断图片是否一样,避免重复提交相同的图片到服务器中
上传图片用图片文件的对象hash哈希值判断图片是否一样,避免重复提交相同的图片到服务器中
前端:要用到一个插件,点击下载
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>企业用户后台管理系统 - 谭人才招聘系统</title>
<meta http-equiv=Content-Type content="text/span; charset=gb2312" />
<meta http-equiv=X-UA-Compatible content="IE=edge" />
<script src="~/Scripts/jquery-1.8.0.min.js"></script>
<script type="text/javascript" src="/Scripts/imgareaselect/ajaxfileupload.js"></script>
</head>
<body>
<form name="myform" method="post" id="myform" enctype="multipart/form-data">
<input type="image" src="" width="185" height="75" id="logo" />
<input id="image" class="logo_submit_f" type="file" name="image" onchange="ajaxfile();">
</form> </body>
<script>
function ajaxfile() {
if ($("#image").val() != '') {
$.ajaxFileUpload({
url: '/Company/Home/UploadLogo',
type: "post",
secureuri: false, //是否需要安全协议,一般设置为false
fileElementId: 'image', //文件上传域的ID
dataType: 'json', //返回值类型 一般设置为json
data: { },
success: function (data, status) { //服务器成功响应处理函数
$('#logo').attr('src', data.FilePath);
$("input[name='logo']").val(data.FilePath);
}
})
}
} </script>
</html>
后端:
/// <summary>
/// 上传企业logo
/// </summary>
/// <returns></returns>
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);
}
/// <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);
}
}
}
做一个记录,没有高水平技术,简简单单写个博客!
上传图片用图片文件的对象hash哈希值判断图片是否一样,避免重复提交相同的图片到服务器中的更多相关文章
- python hash 哈希值
自增知识点 1,哈希 什么是可哈希(hashable)? 简要的说可哈希的数据类型,即不可变的数据结构(字符串str.元组tuple.对象集objects). 哈希有啥作用? 它是一个将大体量数据转化 ...
- Java 对象的哈希值是每次 hashCode() 方法调用重计算么?
对于没有覆盖hashCode()方法的对象 如果没有覆盖 hashCode() 方法,那么哈希值为底层 JDK C++ 源码实现,实例每次调用hashcode()方法,只有第一次计算哈希值,之后哈希值 ...
- 关于 百度 Ueditor 上传图片时 打开文件夹的延迟问题
在使用 ueditor 开发时, 作为一个web文本编辑器使用时. 当点击上传图片时, 文件夹要延迟好久才能打开. 解决: 针对多图片上传, 将/ueditor/dialogs/image/image ...
- 关于 百度 Ueditor (在chrome浏览器) 上传图片时 打开文件夹的延迟问题
在使用 ueditor 开发时, 作为一个web文本编辑器使用时. 当点击上传图片时, 文件夹要延迟好久才能打开. 解决: 针对多图片上传, 将/ueditor/dialogs/image/image ...
- webpack提取图片文件打包压缩
抽离图片文件打包到指定路径下 压缩抽离的图片资源 配置生成html中的图片路径 一.准备测试环境 //工作区间 src//文件夹 index.js//入口文件 index.css//样式文件 inde ...
- C# 通过比对哈希码判断两个文件内容是否相同
1.使用System.security.Cryptography.HashAlgorithm类为每个文件生成一个哈希码,然后比较两个哈希码是否一致. 2. 在比较文件内容的时候可以采用好几种方法.例如 ...
- struts2 文件的上传下载 表单的重复提交 自定义拦截器
文件上传中表单的准备 要想使用 HTML 表单上传一个或多个文件 须把 HTML 表单的 enctype 属性设置为 multipart/form-data 须把 HTML 表单的method 属性设 ...
- EF+LINQ事物处理 C# 使用NLog记录日志入门操作 ASP.NET MVC多语言 仿微软网站效果(转) 详解C#特性和反射(一) c# API接受图片文件以Base64格式上传图片 .NET读取json数据并绑定到对象
EF+LINQ事物处理 在使用EF的情况下,怎么进行事务的处理,来减少数据操作时的失误,比如重复插入数据等等这些问题,这都是经常会遇到的一些问题 但是如果是我有多个站点,然后存在同类型的角色去操作 ...
- JS将图片文件转为64位字符串再post到接口上传图片
HTML: <div class="ai-item upload-id-img"> <p>上传身份证照片</p> <div class=& ...
随机推荐
- 【scala】占位符
Scala语言为了让函数字面量更加精简,还可以使用下划线作为占位符,用来表示一个或多个参数. 我们用来表示的参数必须满足只在函数字面量中出现一次. 我们用例子来看占位符的用法 scala> va ...
- 获取整个页面HTML的信息以及注意事项
两种方式: 1.从每个节点获取 var a = '<!DOCTYPE html><html lang="zh-cn">'; var z = "&l ...
- AutoLayout 使用详细
1.实际应用中,这Compact,Any,Regular如何运用呢? w:Any h:Any 是我们刚建立工程时候默认选择的,算是一切描述的父类.其他的种类描述都是在此基础上变化的,比如:如果weig ...
- 2017.11.17 Demo-stm8+temperature timeing control
1Find the lab and add in project. Downtown it from ST official website..compile it to ensure it pa ...
- How to Have a Healthy Relationship --shanbei 为单身节写
我在扇贝发现一片好文. Sometimes relationships can seem like a lot of work until you sit back and realize just ...
- Visual Studio Nuget还原步骤
vs2013是在这里还原: NuGet套件还原步骤(以vs2012为例) 下载别人的范例,出现由于Nuget套件不存在而无法启动时:效果如下图: 步骤如下:1.点击 项目->启用NuGet程序包 ...
- jsp中解决乱码问题
解决中文乱码 a) 第一种: String name=new String(name.getBytes("ISO-8859-1"),"UTF-8"); b) 第 ...
- (八)java运算符
算数运算符 + - * / % ++ -- class Ysf { public static void main(String[] args) { System.out.println(5/2);/ ...
- 创建Oracle数据库需要注意的几点
规划表和存储空间,防止出现空间不足或者空间的浪费 规划快速恢复区,将快速恢复区定义在与数据文件不同的存储区域,减少IO争用 规划数据库的名称,db_name,db_main,sid 规划spfile内 ...
- leetcode_sql_4,196
196. Delete Duplicate Emails Write a SQL query to delete all duplicate email entries in a table name ...