H5移动端实现图片上传
转至 :https://blog.csdn.net/qq_37610423/article/details/84319410
效果图:
我在用这个的时候发现博主少写了一些东西,导致功能无法实现,所以我改了一些东西直接复制就可以了
Html代码:
<div class="file-box clearboth" id="fileBox">
<label class="clone-dom" style="display:none;">
<input type="file" class="file-btn" name="img[]"/>
</label>
<div class="review-box"></div>
<label><input type="file" class="file-btn clone-dom" name="img[]"/>
</label>
</div>
js代码:
记得引用Jquery文件!!!!!
<script type="text/javascript">
//一定要记得加这个
$(document).ready(function(){
//获取文件url
function createObjectURL(blob){
if (window.URL){
return window.URL.createObjectURL(blob);
} else if (window.webkitURL){
return window.webkitURL.createObjectURL(blob);
} else {
return null;
}
}
var box = $("#fileBox .review-box"); //显示图片box
var file = $("#file"); //file对象
var domFragment = document.createDocumentFragment(); //文档流优化多次改动dom
$("#fileBox").on("click", ".file-btn",function(){
var index = $(this).parent().index();
if(index == 6){
alert("最多可以上传4张图片!");
return false;
}
});
//触发选中文件事件
$("#fileBox").on("change", ".file-btn", function(event){
var imgNum = parseInt($("#fileBox .review-box img").length);
if(imgNum < 4){
var file = event.target.files; //获取选中的文件对象
var imgTag = $("<img src=''/>");
var fileName = file[0].name; //获取当前文件的文件名
var url = createObjectURL(file[0]); //获取当前文件对象的URL
//忽略大小写
var jpg = (fileName.indexOf(".jpg") > -1) || (fileName.toLowerCase().indexOf(".jpg") > -1);
var png = (fileName.indexOf(".png") > -1) || (fileName.toLowerCase().indexOf(".png") > -1);
var jpeg = (fileName.indexOf(".jpeg") > -1) || (fileName.toLowerCase().indexOf(".jpeg") > -1);
var jpeg = (fileName.indexOf(".gif") > -1) || (fileName.toLowerCase().indexOf(".gif") > -1);
var jpeg = (fileName.indexOf(".bmp") > -1) || (fileName.toLowerCase().indexOf(".bmp") > -1);
//判断文件是否是图片类型
if(jpg || png || jpeg || gif || bmp){
imgTag.attr("src",url);
}else{
alert("请选择合适的图片类型文件!");
}
//最佳显示
var imgbox = $("<div class='prev-item'><span class='closebtn'>×</span></div>");
imgbox.append(imgTag);
box.append(imgbox);
event.target.parentNode.style.display = "none";
var cloneDom = $(".clone-dom").eq(0).clone().removeAttr("style");
$("#fileBox").append(cloneDom);
}
});
$(".review-box").on("click", ".prev-item", function(){
var index = $(this).index();
$(this).remove();
$("#fileBox label:eq(" + (index + 1) + ")").remove();
});
});
</script>
CSS代码:
#fileBox{
margin:/*1*/rem 0;
}
#fileBox label{
border: 1px solid #ccc;
display:block;
float:left;
height:60px;
width:60px;
background:url(../img/images/images/xiang1_06.png) no-repeat center;
background-size: .19rem;
background-color: #ccc;
margin-left: .17rem;
}
#fileBox .file-btn{
height:50px;
width:50px;
margin:0 .5rem .5rem 0;opacity:0;
}
#fileBox .review-box{
display:block;
float:left;
margin-left: .17rem;
}
#fileBox .review-box img{
height:60px;
width:60px;
margin:0 .1rem .2rem 0;
}
#fileBox .prev-item{
position:relative;display:inline-block;
}
#fileBox .prev-item .closebtn{
position:absolute;
right: -1px;
top: -4px;
display: block;
height: 14px;
width: 14px;
color: #fff;
font-size: 16px;
line-height:14px;
text-align: center;
background: red;
border-radius: 10px;
}
#fileBox .prev-item .closebtn {
position: absolute;
right: 7px;
top: -4px;
display: block;
height: 14px;
width: 14px;
color: #fff;
font-size: 16px;
line-height: 14px;
text-align: center;
background: #8E8E93;
border-radius: 10px;
}
H5移动端实现图片上传的更多相关文章
- H5拍照、选择图片上传组件核心
背景 前段时间项目重构,改成SSR的项目,但之前用的图片选择上传组件不支持SSR(server-side-render).遂进行了调研,发现很多的工具.但有的太大,有的使用麻烦,有的不满足使用需求.决 ...
- H5 利用vue实现图片上传功能。
H5的上传图片如何实现呢? 以下是我用vue实现的图片上传功能,仅供参考. <!DOCTYPE html> <html> <head> <meta chars ...
- [javascript]——移动端 HTML5 图片上传预览和压缩
在开发移动端web网页中,我们不可避免的会遇到文件上传的功能,但由于手机图片尺寸太大,上传时间过长导致用户体验太差,就需要在上传前对图片进行一定的压缩. 在代码之前,有必要先了解我们即将使用到的几个A ...
- 用html5文件api实现移动端图片上传&预览效果
想要用h5在移动端实现图片上传&预览效果,首先要了解html5的文件api相关知识(所有api只列举本功能所需): 1.Blob对象 Blob表示原始二进制数据,Html5的file对象就继 ...
- html图片上传阅览并且点击放大
关闭 qq_31540195的博客 目录视图 摘要视图 订阅 异步赠书:9月重磅新书升级,本本经典 程序员9月书讯 每周荐书: ...
- 移动端H5实现图片上传
移动端H5实现图片上传 https://segmentfault.com/a/1190000010034177
- h5移动端实现图片文件上传
PC端上传文件多半用插件,引入flash都没关系,但是移动端要是还用各种冗余的插件估计得被喷死,项目里面需要做图片上传的功能,既然H5已经有相关的接口且兼容性良好,当然优先考虑用H5来实现. JS代码 ...
- js移动端/H5同时选择多张图片上传并使用canvas压缩图片
最近在做一个H5的项目,里边涉及到拍照上传图片的功能以及识别图片的功能,这里对识别图片的功能不做赘述,不属本文范畴.我在做完并上线项目后,同事跟我提了一个要求是可不可以同时选择多张图片上传,我做的时候 ...
- vuejs开发组件分享之H5图片上传、压缩及拍照旋转的问题处理
一.前言 三年.net开发转前端已经四个月了,前端主要用webpack+vue,由于后端转过来的,前端不够系统,希望分享下开发心得与园友一起学习. 图片的上传之前都是用的插件(ajaxupload), ...
随机推荐
- 尚硅谷阳哥JVM笔记
JVM体系结构 类加载器(快递员): 只负责加载java文件,编译后的class文件在文件开头有特定的文件表示,将class文件字节码内容从硬盘加载到JVM内存中并将这些内容转换成方法区的运行时数据结 ...
- hackrf one环境搭建以及升级固件
一.环境配置 操作系统: Ubuntu 18 硬件:hackrf 第一步 配置国内源 备份 /etc/apt/sources.list 文件 sudo mv /etc/apt/sources.list ...
- Docker应用安装
一.安装mysql 1.查看可用的 MySQL 版本 访问 MySQL 镜像库地址:https://hub.docker.com/_/mysql?tab=tags . 可以通过 Sort by 查看其 ...
- Shareplex搭建步骤(rman)
实施例:rman/BCV 环境准备 splex软件上传 源端: #mkdir /quest #chmod -R 755 /quest #chown -R oracle:oinstall /quest ...
- Java多线程--CAS
在Java多线程并发的情况下同时对一个变量进行操作会出现线程安全的问题,假如我们现在使用20个线程对一个变量不停累加1,代码如下: 1 public class ThreadDemo implemen ...
- LINQ中的OrderBy实现按照两个字段升序、降序排序操作
在公司或许有这种需求,先根据第一个某个字段按照升序排序,然后如果相同,在按照第二个某个字降序排序,我们该怎么去实现呢? 现在来教教大家分别使用Labmda和LINQ进行这种操作. 1.先按照第一个字段 ...
- 高并发场景-请求合并(一)SpringCloud中Hystrix请求合并
背景 在互联网的高并发场景下,请求会非常多,但是数据库连接池比较少,或者说需要减少CPU压力,减少处理逻辑的,需要把单个查询,用某些手段,改为批量查询多个后返回. 如:支付宝中,查询"个人信 ...
- tomcat源码--springboot整合tomcat源码分析
1.测试代码,一个简单的springboot web项目:地址:https://gitee.com/yangxioahui/demo_mybatis.git 一:tomcat的主要架构:1.如果我们下 ...
- TIMESTAMP with implicit DEFAULT value is deprecated
出错版本 mysql 5.7 why? (警告)不包含隐式默认值的时间戳 way? 在 /etc/my.conf中 mysqld 模块中添加 explicit_defaults_for_timesta ...
- 服务器备用远程-----Radmin客户端的操作指南(如何远程与传送文件)
一台服务器的寿命一般比较长可能会从几年到几十年,就会经历各个版本的更新与升级.再经过时间的历练后,可能windwos自带的远程连接有时候会拉胯,经常报错. 这时候就需要备选方案,有钱的单位会自己搭建堡 ...