`

点击按钮上传多张图片

阅读更多

点击 按钮 上传多张图片

 

功能样式:(与以往不同)刚开始无显示框,仅有添加按钮,点击添加后页面添加一个图片,再次点击继续添加------这里与后台交互用到AJAX处理

 

直接上代码:

HTML:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			*{
				margin: 0;
				padding: 0;
			}
			#upBox{
				text-align: center;
				width:500px;
				padding: 20px;
				border: 1px solid #666;
				margin: auto;
				margin-top: 150px;
				margin-bottom: 200px;
				position: relative;
				border-radius: 10px;
			}
			#inputBox{
				width: 100%;
				height: 40px;
				border: 1px solid cornflowerblue;
				color: cornflowerblue;
				border-radius: 20px;
				position: relative;
				text-align: center;
				line-height: 40px;
				overflow: hidden;
				font-size: 16px;
			}
			#inputBox input{
				width: 114%;
				height: 40px;
				opacity: 0;
				cursor: pointer;
				position: absolute;
				top: 0;
				left: -14%;
				
			}
			#imgBox{
				text-align: left;
			}
			.imgContainer{
				display: inline-block;
				width: 32%;
				height: 150px;
				margin-left: 1%;
				border: 1px solid #666666;
				position: relative;
				margin-top: 30px;
				box-sizing: border-box;
			}
			.imgContainer img{
				width: 100%;
				height: 150px;
				cursor: pointer;
			}
			.imgContainer p{
				position: absolute;
				bottom: -1px;
				left: 0;
				width: 100%;
				height: 30px;
				background: black;
				text-align: center;
				line-height: 30px;
				color: white;
				font-size: 16px;
				font-weight: bold;
				cursor: pointer;
				display: none;
			}
			.imgContainer:hover p{
				display: block;
			}
			#btn{
				outline: none;
				width: 100px;
				height: 30px;
				background: cornflowerblue;
				border: 1px solid cornflowerblue;
				color: white;
				cursor: pointer;
				margin-top: 30px;
				border-radius: 5px;
			}
		</style>
		<script src="http://www.jq22.com/jquery/jquery-1.10.2.js"></script>
	</head>
	<body>
		<div style="width: 100%;height: 100vh;position: relative;">
			<div id="upBox">
			 <div id="inputBox"><input type="file" title="请选择图片" id="file" multiple accept="image/png,image/jpg,image/gif,image/JPEG"/>点击选择图片</div>
		     <div id="imgBox">
		     </div>
		     <button id="btn">上传</button>
			</div>
		</div>
		
		<script src="js/uploadImg.js" type="text/javascript" charset="utf-8"></script>
		<script type="text/javascript">
			imgUpload({
				inputId:'file', //input框id
				imgBox:'imgBox', //图片容器id
				buttonId:'btn', //提交按钮id
				upUrl:'',  //提交地址
				data:'file1' //参数名
			})
		</script>
		
	</body>
</html>

 

 

 

JS:

var imgSrc = []; //图片路径
var imgFile = []; //文件流
var imgName = []; //图片名字
//选择图片
function imgUpload(obj) {
	var oInput = '#' + obj.inputId;
	var imgBox = '#' + obj.imgBox;
	var btn = '#' + obj.buttonId;
	$(oInput).on("change", function() {
		var fileImg = $(oInput)[0];
		var fileList = fileImg.files;
		for(var i = 0; i < fileList.length; i++) {
			var imgSrcI = getObjectURL(fileList[i]);
			imgName.push(fileList[i].name);
			imgSrc.push(imgSrcI);
			imgFile.push(fileList[i]);
		}
		addNewContent(imgBox);
	})
	$(btn).on('click', function() {
		var data = new Object;
		data[obj.data] = imgFile;
		submitPicture(obj.upUrl, data);
	})
}
//图片展示
function addNewContent(obj) {
	$(imgBox).html("");
	for(var a = 0; a < imgSrc.length; a++) {
		var oldBox = $(obj).html();
		$(obj).html(oldBox + '<div class="imgContainer"><img title=' + imgName[a] + ' alt=' + imgName[a] + ' src=' + imgSrc[a] + ' onclick="imgDisplay(this)"><p onclick="removeImg(this,' + a + ')" class="imgDelete">删除</p></div>');
	}
}
//删除
function removeImg(obj, index) {
	imgSrc.splice(index, 1);
	imgFile.splice(index, 1);
	imgName.splice(index, 1);
	var boxId = "#" + $(obj).parent('.imgContainer').parent().attr("id");
	addNewContent(boxId);
}
//上传(将文件流数组传到后台)
function submitPicture(url,data) {
	console.log(data);
	alert('请打开控制台查看传递参数!');
	if(url&&data){
		$.ajax({
			type: "post",
			url: url,
			async: true,
			data: data,
			traditional: true,
			success: function(dat) {
	//			console.log(dat);
			}
		});
	}
}
//图片灯箱
function imgDisplay(obj) {
	var src = $(obj).attr("src");
	var imgHtml = '<div style="width: 100%;height: 100vh;overflow: auto;background: rgba(0,0,0,0.5);text-align: center;position: fixed;top: 0;left: 0;z-index: 1000;"><img src=' + src + ' style="margin-top: 100px;width: 70%;margin-bottom: 100px;"/><p style="font-size: 50px;position: fixed;top: 30px;right: 30px;color: white;cursor: pointer;" onclick="closePicture(this)">×</p></div>'
	$('body').append(imgHtml);
}
//关闭
function closePicture(obj) {
	$(obj).parent("div").remove();
}

//图片预览路径
function getObjectURL(file) {
	var url = null;
	if(window.createObjectURL != undefined) { // basic
		url = window.createObjectURL(file);
	} else if(window.URL != undefined) { // mozilla(firefox)
		url = window.URL.createObjectURL(file);
	} else if(window.webkitURL != undefined) { // webkit or chrome
		url = window.webkitURL.createObjectURL(file);
	}
	return url;
}

 jQuery版本可去官网下载

 

分享到:
评论

相关推荐

    tinymce 多图上传插件,点击弹窗确认按钮自动上传

    2. **触发文件选择**:当用户点击按钮时,我们需要调用浏览器的文件选择API,让用户选择他们想要上传的图片。这通常可以通过监听按钮的点击事件并调用`input[type=file]`元素的`click`事件来实现。 3. **处理多图...

    asp.net上传多张图片

    在ASP.NET中,上传多张图片是一项常见的功能需求,尤其在构建交互性强的Web应用程序时。这个场景下,用户可以通过点击一个按钮来添加多个图片上传控件,以便一次性上传多张图片。以下将详细讲解如何实现这一功能。 ...

    phpcms_v9 后台上传图片按钮无法点击

    在PHP CMS v9系统中,用户可能会遇到一个棘手的问题:后台上传图片的按钮变得无法点击。这个问题主要是由于现代浏览器逐渐淘汰对Flash的支持所引起的。Flash曾是网页中用于多媒体内容展示的重要技术,但因其安全性和...

    C#WINFROM多张多图片预览和批量上传

    - 事件驱动编程:点击按钮触发图片预览或上传操作,按钮Click事件是关键。 7. 数据持久化: - 如果需要保存用户选择的图片列表,可以使用XML、JSON或SQLite数据库进行数据持久化。 8. 网络通信: - 使用...

    HTML5多张图片上传删除代码.zip

    在实际应用中,还需要考虑上传图片到服务器的部分。这通常涉及到使用Ajax(比如jQuery的`$.ajax`或Fetch API)来发送HTTP请求,同时可能需要处理文件的二进制数据。另外,为了优化用户体验,可能还会加入进度条、...

    kindeditor-4.1.11多图上传按钮无法出现且无法点击flash无法上传

    在它的4.1.11版本中,存在一个与Flash相关的问题,即多图上传按钮无法显示且无法通过Flash进行文件上传。由于Adobe公司在2020年底已经停止对Flash Player的支持,这个问题对于依赖Flash的KindEditor来说,确实是一个...

    一次性上传多张图片

    "一次性上传多张图片"的功能大大提升了用户体验,因为它减少了用户多次点击上传按钮的繁琐过程。C#作为.NET框架的主要编程语言,提供了丰富的库和API来支持这种功能的实现。下面我们将深入探讨如何在C#中实现一次性...

    Asp.net单按钮上传文件和批量上传图片

    批量上传图片,可一次性选择不超过20张图片,选择好后可以删除其中不想上传的图片,点击“开始上传”后,即可将图片上传到服务器,点击“全部插入”可把图片显示在前台的页面中。 http://bbs.ah580.com

    js异步上传多张图片插件的使用方法

    在JavaScript中,异步上传多张图片是一种常见的需求,特别是在网页应用中,用户可能需要上传照片作为个人资料、产品图片等。本篇文章将详细介绍如何使用一个特定的js异步上传多张图片插件,帮助开发者实现这一功能。...

    ajax单按钮文件上传插件

    在传统的文件上传方式中,用户通常需要点击按钮选择文件,然后再次点击上传按钮才能发起上传请求。而这个插件通过整合这两个步骤,极大地简化了上传流程,提升了用户体验。 Ajax技术的运用使得文件上传能够在后台...

    JQuery+ajax实现批量上传图片

    首先,批量上传的核心在于用户可以选择多张图片,并且这些图片会逐个上传至服务器。在前端HTML部分,可以看到一个包含文件输入控件(`&lt;input type="file"&gt;`)的表格结构,用户可以点击“增加”按钮来添加更多的文件...

    android 拍照或从本地相册多次添加多张图片

    本文将详细讲解如何实现“android 拍照或从本地相册多次添加多张图片”的功能,这涉及到Android的多媒体访问、意图(Intent)使用以及图片处理等多个知识点。 首先,我们需要理解Android的权限管理。在Android 6.0...

    点击上传按钮img显示图片

    在.NET开发环境中,我们经常需要实现用户通过点击一个图像(img)按钮来上传图片的功能。这个功能对于网页或应用程序的交互性至关重要,因为它提供了一种直观且用户友好的方式来处理图像上传。以下是对该主题的详细...

    图片批量上传

    批量上传图片,可一次性选择不超过20张图片,可删除其中不想上传的图片,点击“开始上传”后,即可将图片上传到服务器,点击“全部插入”即可将图片显示在前台页面中。有益初学者,对批量上传文件及图片加深理解并...

    vue.js多张图片上传

    - 用户通过点击`&lt;input type="file"&gt;`可以选择多张图片。 - `@change`事件监听文件选择,调用`handleFileChange`方法。 - `handleFileChange`将选中的文件传递给`readFile`方法,逐个读取并生成预览URL。 - `...

    ONETHIK上传多张图片.rar

    - 用户在前端选择多张图片,点击上传按钮。 - JavaScript截取文件信息,预览图片,并发送Ajax请求到后端接口。 - 后端接收到请求后,验证文件合法性,然后保存图片,返回保存成功的图片信息。 - 前端接收到返回...

    kindeditor--4.1.12 解决flash批量上传图片按钮不显示与支持video视频

    版本4.1.12解决了之前版本中Flash批量上传图片按钮不显示的问题,并且增加了对video视频的支持,使得编辑器更加完善和适应现代网页的需求。 在Flash批量上传图片功能上,KindEditor 4.1.12修复了按钮不显示的bug,...

    thinkphp+swfupload上传多张图片

    在开发Web应用时,有时我们需要实现用户上传多张图片的功能,这在论坛、博客、电商网站等场景中非常常见。ThinkPHP是一个流行的PHP框架,它提供了丰富的功能和强大的支持,帮助开发者快速构建复杂的Web应用。而...

    tinymce 自定义多图片批量上传插件 附使用示范Test

    这可以通过`editor.addButton`方法完成,同时定义按钮的回调函数,该函数将在用户点击按钮时执行。 ```javascript editor.addButton('bulk_image_upload', { text: '批量上传', icon: false, onclick: function...

    上传按钮美化

    在本教程中,我们将探讨如何将传统的文字式上传按钮转化为具有视觉吸引力、可点击图片的上传组件,如同微博中的图片上传按钮。 首先,我们需要了解基本的HTML和CSS知识。上传按钮通常由`&lt;input type="file"&gt;`标签...

Global site tag (gtag.js) - Google Analytics