首页

文章

jquery ajax多图上传显示怎么写

发布网友 发布时间:2022-04-19 20:08

我来回答

2个回答

懂视网 时间:2022-04-29 11:24

前言:

项目中经常会大量的使用到图片上传,之前涉及到的时候经常会在网上下载一些素材直接拿过来使用,但是随着项目的增多发现用的是各式各样的,导致非常混乱。所以抽空写了一个DEMO来梳理下图片上传的流畅以及单图和多图上传需要注意的点。

多图上传

多图上传,这里仅仅是做了前端的展示效果,实际项目中,多图上传应该是每次上传一张图片后向后台发送一次请求,后台返回img路径然后进行展现。

(推荐教程:js教程)

为什么一定要传入后台在进行展现呢?

1、如果直接在前台先展现base64图片路径,在向后台发送请求。如果接口出现错误后,会给用户产生错觉,以为图片上传成功,而这时后台是没有接收到图片的;

2、file文件每次发生变化,会将之前的files文件给覆盖掉。如果直接展现不用ajax提交后,最终用form提交只会提交最后一张。

<!DOCTYPE html>
<html>
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <meta http-equiv="X-UA-Compatible" content="ie=edge">
 <title>多图上传/单图上传</title>
 <style>
 *{
 margin: 0;
 padding: 0;
 }
 .box{
 width: 1000px;
 height: 120px;
 margin: 0 auto;
 border: 1px solid #ddd;
 margin-top: 20px;
 box-sizing: border-box;
 padding: 10px;
 }
 .upload{
 width: 100px;
 height: 100px;
 float: left;
 position: relative;
 overflow: hidden;
 }
 .upload input{
 position: absolute;
 z-index: 1000;
 top:0;
 left:0;
 width: 100%;
 height: 100%;
 opacity: 0;
 }
 .upload a{
 display: block;
 width: 100%;
 }
 .upload img{
 display: block;
 width: 100%;
 height: 100%;
 }
 .imgList{
 float: left;
 overflow: hidden;
 }
 .imgList .item{
 width: 100px;
 height: 100px;
 margin-right: 20px;
 float: left;
 position: relative;
 }
 .imgList .item img{
 display: block;
 width: 100%;
 height: 100%;
 }
 .imgList .item span{
 position: absolute;
 top: 0;right: 0;
 width: 100%;
 background: red;
 color:#fff;
 height: 20px;
 width: 20px;
 text-align: center;
 border-radius: 50%;
 cursor: pointer;
 }
 </style>
</head>
<body>
 <div>
 <!-- 放图片的位置 -->
 <div id="imgList"></div>
 <!-- 上传按钮 -->
 <div>
 <input type="file" name="file" value="" multiple accept="image/*" onchange="uploadImg(this);">
 <a href="javascript:void(0)" rel="external nofollow" ><img src="z_add.png" alt=""></a>
 </div>
 </div>
 <script>
 function uploadImg(obj){ 
 var files = obj.files;//获取上传文件后的fileList
 var imgList = [];//声明空数组用来接收上传完成后的图片
 for(var i = 0; i<files.length;i++){
 var imgUrl = window.URL.createObjectURL(files[i]);//将文件转换成base64 URL格式
 imgList.push(imgUrl);//将url压入到数组中 **如果需要图片统一选择完毕后,点击上传按钮统一提交,那么直接拿这imgList给后台传递即可。**
 // 循环创建img容器用来放置url在页面上显示
 var img = document.createElement('img')
 img.setAttribute("src", imgList[i]);
 //删除按钮
 var close = document.createElement('span')
 close.innerHTML="x"
 close.className='close'
 close.setAttribute('onclick',"imgRemove(this)")
 //创建放置img的盒子
 var item = document.createElement('div');
 item.className='item';
 item.append(img)
 item.append(close)
 var box = document.getElementById("imgList");
 box.append(item);
 //ajax向后台发送请求
 
 }
 }
 //删除代码
 function imgRemove(obj){
 obj.parentNode.remove()
 }
 
 </script>
</body>
</html>

单图上传

去掉input中的multiple 属性就变成了单图上传;

<input type="file" name="file" value="" accept="image/*" onchange="uploadImg(this);">

按照上边的代码直接就可以实现单图上传和多图上传。下边在说下单图上传和多图上传提交需要注意的;

1、单图上传可以跟随form表单一起提交,给input一个name值后台就可以提交过去;

2、多图上传不可以跟form一起提交,因为每次上传后file只会保留最新的;可以先通过ajax将图片提交成功后,在form内去循环创建隐藏的input将后台返回的路径设置成改input的val值最后跟随form提交;需要注意隐藏的input的name值写成[]形式,比如:name=“img[]”。这样在form提交的时候后台就可以接受到所有的图片;

以上的代码,适用于前端点击file上传图片后的显示。具体与后台的一些交互可以根据实际项目中的需求进行增加!

热心网友 时间:2022-04-29 08:32

首先我们在页面上放置个上传按钮,使用POST提交到ajax.php。#ul_pics 用来显示上传完毕后的图片。
<a class="btn" id="btn">上传图片</a> 最大500KB,支持jpg,gif,png格式。
<ul id="ul_pics" class="ul_pics clearfix"></ul>
接着,加载jQuery.js和plupload.full.min.js插件。
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="plupload/plupload.full.min.js"></script>
当点击按钮“上传图片”后,弹出选择文件对话框,按 "ctrl" 选择多图片上传。然后调用 uploader.start() 方法,开始上传。上传中间过程我们可以用 UploadProgress 方法来显示文件进度,最后通过 FileUploaded 来显示对应的图片。通过浏览器控制台,会发现上传一张图片,会向后台ajax.php请求一次。
var uploader = new plupload.Uploader({ //创建实例的构造方法
runtimes: 'html5,flash,silverlight,html4',
//上传插件初始化选用那种方式的优先级顺序
browse_button: 'btn',
// 上传按钮
url: "ajax.php",
//远程上传地址
flash_swf_url: 'plupload/Moxie.swf',
//flash文件地址
silverlight_xap_url: 'plupload/Moxie.xap',
//silverlight文件地址
filters: {
max_file_size: '500kb',
//最大上传文件大小(格式100b, 10kb, 10mb, 1gb)
mime_types: [ //允许文件上传类型
{
title: "files",
extensions: "jpg,png,gif"
}]
},
multi_selection: true,
//true:ctrl多文件上传, false 单文件上传
init: {
FilesAdded: function(up, files) { //文件上传前
if ($("#ul_pics").children("li").length > 30) {
alert("您上传的图片太多了!");
uploader.destroy();
} else {
var li = '';
plupload.each(files,
function(file) { //遍历文件
li += "<li id='" + file['id'] + "'><div class='progress'><span class='bar'></span><span class='percent'>0%</span></div></li>";
});
$("#ul_pics").append(li);
uploader.start();
}
},
UploadProgress: function(up, file) { //上传中,显示进度条
$("#" + file.id).find('.bar').css({
"width": file.percent + "%"
}).find(".percent").text(file.percent + "%");
},
FileUploaded: function(up, file, info) { //文件上传成功的时候触发
var data = JSON.parse(info.response);
$("#" + file.id).html("<div class='img'><img src='" + data.pic + "'/></div><p>" + data.name + "</p>");
},
Error: function(up, err) { //上传出错的时候触发
alert(err.message);
}
}
});
uploader.init();
历史要怎么读,有啥诀窍 高中历史诀窍 年终会活动策划方案 深度解析:第一财经回放,探索财经新风向 逆水寒手游庄园怎么邀请好友同住 逆水寒手游 逆水寒不同区可以一起组队吗? 逆水寒手游 逆水寒怎么进入好友世界? 逆水寒手游 逆水寒怎么去别人的庄园? 使用puppeteer实现将htmll转成pdf 内卷时代下的前端技术-使用JavaScript在浏览器中生成PDF文档 【译】将HTML转为PDF的几种实现方案 变形金刚08动画怎么样 变形金刚08动画的问题 变形金刚08动画日语版剧情介绍 高分!换显卡nvidia控制面板被我卸了,重新安装显卡驱动后没了nvidia控... 我的nvidia控制面板被卸载了 怎么找回啊 卸载后 这个画面看着很奇怪_百 ... 李卓彬工作简历 林少明工作简历 广东工业职业技术学院怎么样 郑德涛任职简历 唐新桂个人简历 土地入股的定义 ups快递客服电话24小时 贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 安徽省徽商集团有限公司经营理念 2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 什么是体育理念 万里挑一算彩礼还是见面礼 绿萝扦插多少天后发芽 绿萝扦插多久发芽 扦插绿萝多久发芽 炖牛排骨的做法和配料 网络诈骗定罪标准揭秘 “流水不争先”是什么意思? mc中钻石装备怎么做 为什么我的MC里的钻石块是这样的?我想要那种。是不是版本的问题?如果是... 带“偷儿”的诗句 “君不见巴丘古城如培塿”的出处是哪里 带“奈何”的诗句大全(229句) 里翁行()拼音版、注音及读音 带“不虑”的诗句 “鲁肃当年万人守”的出处是哪里 无尘防尘棚 进出口报关流程,越详细越好。谢谢大家指教。 双线桥不是看化合价升多少就标多少的吗?为什么CL2+2KI=2KCL+I2中I失... 登记注册身份验证是干什么的 爱山东怎么实名认证变成4级 蒙速办实名认证有红点是什么意思 酷狗音乐破解版? 请问有没有酷狗VIP的破解版? 酷狗破解版有吗? 手机酷狗音乐付费音乐怎么破解,一个月听不了几个... 如何解决酷狗国外地区限制? 求酷狗破解版? 酷狗会员下载的歌曲到u盘,不是mp3格式都是GKM格式... 网吧不能安装酷狗等软件,如何破解他的限制 如何才能破解酷狗收费音乐? ios系统海外要怎么破解酷狗音乐或qq音乐? 酷狗现在除了要会员才能下载的歌,还有些要会员才... 酷狗的专属格式KGM格式转换破解,急求一个 酷狗破解版在哪里下载 酷狗音乐加密怎么解除 谁有酷狗破解版,!? 怎么破解电脑版酷狗8.0音乐试听权限 怎么破解酷狗音乐的付费音乐 ajax上传“多张图片“”后PHP返回HTML的的路径怎样插... Java中如何实现Ajax方式上传图片? CI如何ajax方式上传图片? asp.net 用Ajax上传多张图片 ajaxSubmit图片上传 ajax提交表单时候,表单里还有多张图片怎么处理? ajax能上传图片吗? ajax上传图片,C#编写的webserbice接收,无法上传 jquery ajax上传图片问题 用jquery实现ajax 上传图片提交到PHP ajax 上传图片怎么获取 jqueryajax不能上传图片? php 不使用插件怎么用 ajax上传图片 ajax 不能传输图片数据吗? ajax怎么上传图片 springmvc+ajax上传图片的问题。传过去的是空值.怎... web前端上传图片的几种方法 急!ajax上传图片,PHP获取不到 ajax怎么跨域上传图片 蒸脸器的好处和坏处你都知道多少?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com