热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

input多图片上传

css我引用啦mui不过不影响上传功能自己喜欢什么样子自行引用,当然弹窗也是用的mui.js废话不多说直接上代码上传图片(最多只能上传3张图片)

css我引用啦mui 不过不影响上传功能 自己喜欢什么样子自行引用,当然弹窗也是用的mui.js
《input 多图片上传》

废话不多说直接上代码

>
>上传图片(最多只能上传3张图片)>
>
>
>
>+>
>
>
>>
>

.photo{
width: 80px;
border: 1px dashed #eee;
height: 80px;
vertical-align: middle;
text-align: center;
display: flex;
align-items: center;
}
.photo span{
color: #eee;
position: absolute;
z-index: 99999;
left: 35px;
}
.photos{
width: 80px;
border: 1px dashed #eee;
height: 80px;
vertical-align: middle;
text-align: center;
display: flex;
align-items: center;
}
.photos span{
color: #eee;
position: absolute;
z-index: 99999;
left: 35px;
}
.filepath{
width:100%;
height:100%;
opacity: 0;
}
.del{
position: absolute;
width: 100%;
height: auto;
background-color: #eee;
opacity: 0.8;
display: block;
text-align: center;
line-height: 2;
bottom: 0;
z-index: 9999999;
}
.phto{
width: 80%;
height: auto;
float: left;
display: flex;
}

//选择图片
var photofath=[]
var photolists=[]
var fileobj = []
$('#file').on('change', function() { //当chooseImage的值改变时,执行此函数
var filePath = $(this).val() //获取到input的value,里面是文件的路径
fileFormat = filePath.substring(filePath.lastIndexOf(".")).toLowerCase(),
src = window.URL.createObjectURL(this.files[0]); //转成可以在本地预览的格式
// 检查是否是图片
if(!fileFormat.match(/.png|.jpg|.jpeg/)) {
mui.toast("上传错误,文件格式必须为:png/jpg/jpeg!",{ duration:'long', type:'div' })
return;
}else if(photolists.indexOf(filePath) !== -1){
mui.toast("请不要重复上传!!",{ duration:'long', type:'div' })
return;
}else{
if(photofath.length==2){
$('.photo').css('display','none') //上传超过两张隐藏
}
//把我们需要的本地地址,预览地址以及上传的files保存成数组
photolists.push(filePath)
photofath.push(src)
fileobj.push(this.files[0])
var photolist=''
//本地预览图片
for(i in photofath){
photolist +='

'
+''
+''+"删除"+''
+'
'
}
$('.phto').html(photolist);
}
$('#file').val('')
});
//删除
function dels(val,key){
if(confirm('确认删除!!')){
//把我们保存的几个需要的数组进行处理 毕竟我们删除操作要处理数据
var index=photofath.indexOf(val);
photolists.splice(index, 1);
photofath.splice(index, 1);
fileobj.splice(index, 1)
var a=parseInt(key)+1
if(photofath.length<1){
$('.phto').children().remove();
}else{
$('.phto div:nth-child('+a+')').remove();
}
if(photofath.length<3){
$('.photo').css('display','flex')
}
mui.toast("删除成功!",{ duration:'long',type:'div' })
}
};

重点来了我们要提交数据给后端

//提交数据事件
PostButton.addEventListener('tap', function() {
var index=parent.layer.getFrameIndex(window.name);
//注意创建一个formData用来放数据
var formData = new FormData();
//把我们所有的图片都放进formData中
for(i in fileobj){
formData.append("imgpath"+[i], fileobj[i]);
}
var postdata=formData
mui.showLoading("正在加载..","div")
$.ajax({
type: "post",
url: '放你都请求地址',
data: postdata,
processData: false,
contentType: false,
success: function(data) {
mui.hideLoading();
if(data.code==1){
mui.toast('提交成功',{ duration:'long', type:'div' })
parent.layer.close(index);
}
}
});
});

原创希望大家支持
具体就是这样啦,如果大家有更好的办法,希望不令赐教。。。。。。


推荐阅读
  • 微信小程序实现类似微博的无限回复功能,内置云开发数据库支持
    本文详细介绍了如何利用微信小程序实现类似于微博的无限回复功能,并充分利用了微信云开发的数据库支持。文中不仅提供了关键代码片段,还包含了完整的页面代码,方便开发者按需使用。此外,HTML页面中包含了一些示例图片,开发者可以根据个人喜好进行替换。文章还将展示详细的数据库结构设计,帮助读者更好地理解和实现这一功能。 ... [详细]
  • 在《ChartData类详解》一文中,我们将深入探讨 MPAndroidChart 中的 ChartData 类。本文将详细介绍如何设置图表颜色(Setting Colors)以及如何格式化数据值(Formatting Data Values),通过 ValueFormatter 的使用来提升图表的可读性和美观度。此外,我们还将介绍一些高级配置选项,帮助开发者更好地定制和优化图表展示效果。 ... [详细]
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • 深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案
    深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案 ... [详细]
  • 在Android平台中,播放音频的采样率通常固定为44.1kHz,而录音的采样率则固定为8kHz。为了确保音频设备的正常工作,底层驱动必须预先设定这些固定的采样率。当上层应用提供的采样率与这些预设值不匹配时,需要通过重采样(resample)技术来调整采样率,以保证音频数据的正确处理和传输。本文将详细探讨FFMpeg在音频处理中的基础理论及重采样技术的应用。 ... [详细]
  • 在Android应用开发中,实现与MySQL数据库的连接是一项重要的技术任务。本文详细介绍了Android连接MySQL数据库的操作流程和技术要点。首先,Android平台提供了SQLiteOpenHelper类作为数据库辅助工具,用于创建或打开数据库。开发者可以通过继承并扩展该类,实现对数据库的初始化和版本管理。此外,文章还探讨了使用第三方库如Retrofit或Volley进行网络请求,以及如何通过JSON格式交换数据,确保与MySQL服务器的高效通信。 ... [详细]
  • 本文介绍了一种自定义的Android圆形进度条视图,支持在进度条上显示数字,并在圆心位置展示文字内容。通过自定义绘图和组件组合的方式实现,详细展示了自定义View的开发流程和关键技术点。示例代码和效果展示将在文章末尾提供。 ... [详细]
  • 【问题】在Android开发中,当为EditText添加TextWatcher并实现onTextChanged方法时,会遇到一个问题:即使只对EditText进行一次修改(例如使用删除键删除一个字符),该方法也会被频繁触发。这不仅影响性能,还可能导致逻辑错误。本文将探讨这一问题的原因,并提供有效的解决方案,包括使用Handler或计时器来限制方法的调用频率,以及通过自定义TextWatcher来优化事件处理,从而提高应用的稳定性和用户体验。 ... [详细]
  • Java Socket 关键参数详解与优化建议
    Java Socket 的 API 虽然被广泛使用,但其关键参数的用途却鲜为人知。本文详细解析了 Java Socket 中的重要参数,如 backlog 参数,它用于控制服务器等待连接请求的队列长度。此外,还探讨了其他参数如 SO_TIMEOUT、SO_REUSEADDR 等的配置方法及其对性能的影响,并提供了优化建议,帮助开发者提升网络通信的稳定性和效率。 ... [详细]
  • 在Cisco IOS XR系统中,存在提供服务的服务器和使用这些服务的客户端。本文深入探讨了进程与线程状态转换机制,分析了其在系统性能优化中的关键作用,并提出了改进措施,以提高系统的响应速度和资源利用率。通过详细研究状态转换的各个环节,本文为开发人员和系统管理员提供了实用的指导,旨在提升整体系统效率和稳定性。 ... [详细]
  • ### 优化后的摘要本学习指南旨在帮助读者全面掌握 Bootstrap 前端框架的核心知识点与实战技巧。内容涵盖基础入门、核心功能和高级应用。第一章通过一个简单的“Hello World”示例,介绍 Bootstrap 的基本用法和快速上手方法。第二章深入探讨 Bootstrap 与 JSP 集成的细节,揭示两者结合的优势和应用场景。第三章则进一步讲解 Bootstrap 的高级特性,如响应式设计和组件定制,为开发者提供全方位的技术支持。 ... [详细]
  • Python 伦理黑客技术:深入探讨后门攻击(第三部分)
    在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ... [详细]
  • 在Ubuntu上安装MySQL时解决缺少libaio.so.1错误及libaio在MySQL中的重要性分析
    在Ubuntu系统上安装MySQL时,遇到了缺少libaio.so.1的错误。本文详细介绍了如何解决这一问题,并深入探讨了libaio库在MySQL性能优化中的重要作用。对于初学者而言,理解这些依赖关系和配置步骤是成功安装和运行MySQL的关键。通过本文的指导,读者可以顺利解决相关问题,并更好地掌握MySQL在Linux环境下的部署与管理。 ... [详细]
  • 深入解析 OpenSSL 生成 SM2 证书:非对称加密技术与数字证书、数字签名的关联分析
    本文深入探讨了 OpenSSL 在生成 SM2 证书过程中的技术细节,重点分析了非对称加密技术在数字证书和数字签名中的应用。非对称加密通过使用公钥和私钥对数据进行加解密,确保了信息传输的安全性。公钥可以公开分发,用于加密数据或验证签名,而私钥则需严格保密,用于解密数据或生成签名。文章详细介绍了 OpenSSL 如何利用这些原理生成 SM2 证书,并讨论了其在实际应用中的安全性和有效性。 ... [详细]
  • 本文探讨了一种高效的算法,用于生成所有数字(0-9)的六位组合,允许重复使用数字,并确保这些组合的和等于给定的整数N。该算法通过优化搜索策略,显著提高了计算效率,适用于大规模数据处理和组合优化问题。 ... [详细]
author-avatar
kitty2702935423
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有