1. 概述

1.1 说明

  在一些前后端不分离的项目中,经常有一些需要把文件或者图片上传的功能,故记录此代码以便后期使用。

1.2 要求

1.上传,10M以内,限bmp,jpg,png,jpeg等图片格式。提示语:限上传10M以内bmp,jpg,png,jpeg等格式的图片。

2.点击上传按钮上传图片,图片在按钮下方展示;按钮名称更改为重新上传。

3.点击表单确定按钮时,才把表单信息与上传图片信息一同上传至服务器。

1.3 展示

  未上传展示:

  

  上传展示:

  

2. 代码

  1. 引用jQuery
  2. 上传后如果不符合要求,则清除上传内容信息(直接.val('')赋值不起作用)
<!DOCTYPE html>
<html> <head>
<meta charset="utf-8" />
<title>图片上传示例</title>
<script type="text/javascript" src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
<style type="text/css">
.imageWrapper {
display: flex;
flex-direction: column;
} .imageWrapper .fontTip {
color: #ccc;
line-height: 24px;
} .imageWrapper .btnUpload {
height: 33px;
min-width: 24px;
padding: 0 20px;
border: 1px solid #0064b6;
border-radius: 3px;
background: #0071ce;
color: #fff;
font-size: 14px;
line-height: 33px;
text-align: center;
display: inline-block;
cursor: pointer;
} .imageShow {
margin-top: 16px;
width: 76px;
height: 84px;
border: 1px solid rgba(151, 151, 151, 1);
} .imageShow>img {
width: 100%;
height: 100%;
}
</style>
</head> <body>
<div class="imageWrapper">
<div>
<button id="uploadButton" type="button" class="btnUpload"></button>
<input id="imagePic" name="imagePic" type="file"
accept=".bmp,.jpg,.png,.jpeg,image/bmp,image/jpg,image/png,image/jpeg" style="display:none" />
</div>
<div class="fontTip">
限上传不超过10M的bmp,jpg,png,jpeg格式的图片
</div>
<div class="imageShow">
<img id="uploadImageShow" src="" />
</div>
</div>
</body>
<script type="text/javascript">
var btnUploadText = '上传';
$(document).ready(function () {
$("#uploadButton").text(btnUploadText)
$(".imageShow").hide()
$('#uploadButton').click(function () {
$('#imagePic').click();
});
$("#imagePic").on("change", function (e) {
var file = e.target.files[0]; //获取图片资源
var fileTypes = ["bmp", "jpg", "png", "jpeg"];
var bTypeMatch = false
for (var i = 0; i < fileTypes.length; i++) {
var start = file.name.lastIndexOf(".");
var fileType = file.name.substring(start + 1);
if (fileType.toLowerCase() == fileTypes[i]) {
bTypeMatch = true;
break;
}
}
if (bTypeMatch) {
if (file.size <= 1024 * 1024 * 10) {
var reader = new FileReader();
reader.readAsDataURL(file); // 读取文件
// 渲染文件
reader.onload = function (arg) {
$(".imageShow").show()
$("#uploadImageShow").attr("src", arg.target.result)
btnUploadText = '重新上传'
$("#uploadButton").text(btnUploadText)
}
} else {
alert('仅支持不超过10M的图片');
emptyImageUpload("#imagePic")
$("#uploadImageShow").attr("src", "")
$(".imageShow").hide()
btnUploadText = '上传'
$("#uploadButton").text(btnUploadText)
return false;
}
} else {
alert('仅限bmp,jpg,png,jpeg图片格式');
emptyImageUpload("#imagePic")
$("#uploadImageShow").attr("src", "")
$(".imageShow").hide()
btnUploadText = '上传'
$("#uploadButton").text(btnUploadText)
return false;
}
});
})
//清空上传图片信息
function emptyImageUpload(selector) {
var fi;
var sourceParent;
if (selector) {
fi = $(selector);
sourceParent = fi.parent();
} else {
return;
}
$("<form id='tempImgForm'></form>").appendTo(document.body); var tempImgForm = $("#tempImgForm");
tempImgForm.append(fi);
tempImgForm.get(0).reset();
sourceParent.append(fi);
tempImgForm.remove();
}
</script> </html>

jQuery 图片上传的更多相关文章

  1. jquery 图片上传本地预览V1.2

    基于JQUERY扩展,图片上传预览插件 目前兼容浏览器(IE 谷歌 火狐) 不支持safari 代码进行小小的压缩 如果看源码 自己解压就行了 版本已升级  修复jquery版本问题  支持任意jqu ...

  2. Jquery图片上传组件,支持多文件上传

    Jquery图片上传组件,支持多文件上传http://www.jq22.com/jquery-info230jQuery File Upload 是一个Jquery图片上传组件,支持多文件上传.取消. ...

  3. Jquery图片上传预览效果

    uploadPreview.js jQuery.fn.extend({ uploadPreview: function (opts) { var _self = this, _this = $(thi ...

  4. jquery图片上传

    总结两个图片上传的方法: 一:使用jquery.form中的ajaxSubmit来实现上传. <script src="~/JavaScript/jquery-1.10.2.min.j ...

  5. jQuery图片上传前先在本地预览(不经过后端处理)

    前段时间遇到一个问题,前端想实现图片上传预览(不经过后端PHP或JAVA处理),用户点击file按钮上传文件,点击确定马上就能看到预览的效果,但在实现的时候无论怎样都取不到file上图片的真实路径,得 ...

  6. jQuery图片上传前先在本地预览

    js代码: /* *名称:图片上传本地预览插件 v1.1 *作者:周祥 *时间:2013年11月26日 *介绍:基于JQUERY扩展,图片上传预览插件 目前兼容浏览器(IE 谷歌 火狐) 不支持saf ...

  7. 【转】HTML5 jQuery图片上传前预览

    hTML5实现表单内的上传文件框,上传前预览图片,针刷新预览images,本例子主要是使用HTML5 的File API,建立一個可存取到该 file的url,一个空的img标签,ID为img0,把选 ...

  8. HTML5 jQuery图片上传前预览

    hTML5实现表单内的上传文件框,上传前预览图片,针刷新预览images,本例子主要是使用HTML5 的File API,建立一個可存取到该file的url,一个空的img标签,ID为img0,把选择 ...

  9. jquery图片上传前预览剪裁

    http://www.webmotionuk.co.uk/jquery/image_upload_crop.php http://keleyi.com/a/bjad/liuvpkke.htm 不错的d ...

随机推荐

  1. let和const的一些知识点

    let和const 不可以重复声明 不会发生变量提升,因此必须在声明之后使用,否则报错! 只在声明所在的块级作用域内有效 let 同一个作用域内不能重复声明同一个变量: function func() ...

  2. CodeForces 232C Doe Graphs(分治+搜索)

    CF232C Doe Graphs 题意 题意翻译 \(Doe\)以她自己的名字来命名下面的无向图 \(D(0)\)是只有一个编号为\(1\)的结点的图. \(D(1)\)是只有两个编号分别为\(1\ ...

  3. git的三个区域比较

    工作区: 暂存区: 提交区: 工作区与暂存区比较:git diff 工作区与提交区比较:git diff 提交hash码或者HEAD 暂存区与提交区比较:git diff --cached 两个不同提 ...

  4. tinyint(1)遇到的坑

    一. Mysql查询的boolean结果将输出为0或者1. 比如: select 1=1; 其输出结果为1. 二. 使用一套中间件对kafka消息进行解析为mysql 语句,其中遇到如下的问题, 目标 ...

  5. Django项目:CMDB(服务器硬件资产自动采集系统)--08--06CMDB测试Linux系统采集硬件数据的命令03

    https://www.virtualbox.org/wiki/Downloads https://mirrors.aliyun.com/centos/7/isos/x86_64/ http://ww ...

  6. PAT甲级——A1047 Student List for Course

    Zhejiang University has 40,000 students and provides 2,500 courses. Now given the registered course ...

  7. 左神算法书籍《程序员代码面试指南》——1_10最大值减去最小值小于或等于num的子数组数量

    [题目]给定数组arr和整数num,共返回有多少个子数组满足如下情况:max(arr[i.j]) - min(arr[i.j]) <= num max(arfi.j])表示子数组ar[ij]中的 ...

  8. PhoneInfoga---用于电话号码的信息收集和OSINT侦察工具

    PhoneInfoga 是仅使用免费资源扫描电话号码的最先进工具之一. 目标是首先在任何国际电话号码上收集标准信息, 如国家,地区,运营商和线路类型,并且准确性非常高. 然后在搜索引擎上搜索足迹以尝试 ...

  9. 从登录接口的响应结果里提取token

    token一般存在于2个地方:1. cookie, 2 ,某个接口的响应结果中 1. 我们接口的token存在于登录接口的响应结果中,如下图: token值 为红色标记的值,在登录接口里加以下2行代码 ...

  10. Commons BeanUtils工具包

    简介: BeanUtils工具包是由Apache公司所开发,提供对Java反射和自省API的包装.其主要目的是利用反射机制对JavaBean的属性进行处理. 我们知道,一个JavaBean通常包含了大 ...