input file上传图片预览(查看图片大小,类型,名字)------------------------------自己动手写jQuery插件


参考文章:http://blog.csdn.net/libin_1/article/details/50433863

最简单的实现方法:

<!DOCTYPE html>
<html>

	<head>
		<meta charset="utf-8" />
		<script type="text/javascript" src="js/jquery.min.js"></script>
		<title></title>
		<style type="text/css">
			div.imger {
				width: 182px;
				height: 142px;
				border: 1px solid green;
				position: relative;
			}
			
			div.imger input {
				position: absolute;
				opacity: 0;
				display: block;
				width: 100%;
				height: 100%;
				z-index: 10;
			}
			
			div.imger img {
				display: block;
				position: absolute;
				width: 100%;
				height: 100%;
				z-index: 1;
			}
			
			div.imger span.closer {
				position: absolute;
				top: 10px;
				right: 10px;
				color: red;
				z-index: 10;
				cursor: pointer;
				display: none;
			}
			
			div.imgers {
				float: left;
				margin: 5px 10px 5px;
				border: 1px solid red;
			}
		</style>
		<script type="text/javascript">
		 	$(function() {
				function getObjectURL(file) {
					var url = null;
					if (window.createObjectURL != undefined) {
						url = window.createObjectURL(file)
					} else if (window.URL != undefined) {
						url = window.URL.createObjectURL(file)
					} else if (window.webkitURL != undefined) {
						url = window.webkitURL.createObjectURL(file)
					}
					return url
				};
				var strs = '<div class="imgers imger">' +
					'<input type="file" />' +
					'<img src="img/btn.png" />' +
					'<span class="closer">X</span>' +
					'</div>';
				$("div.imger").on('change', "input[type='file']", function(e) {
					var srcs = getObjectURL(this.files[0]);
					alert(srcs);
					/**************************/
					console.log("图片大小:" + this.files[0].size / 1024 + "     图片类型:" + this.files[0].type + "    图片名字:" + this.files[0].name + "     图片上次修改时间:" + this.files[0].lastModifiedDate);
					var tuozhanming = (this.files[0].name).split('.');
					console.log("文件拓展名:" + tuozhanming[1]);
					/*************************/
					$(this).next('img').attr('src', srcs).next('span.closer').show();
				});
				$("div.imger").on('click', 'span.closer', function() {
					$("div.imger input[type='file']").val('');
					$(this).hide().prev('img').attr('src', 'img/btn.png');
				});
				//-----------------------------------------------------------------------------//
				$("body").on('change', "div.imgers input[type='file']", function(e) {
					var srcs = getObjectURL(this.files[0]);
					alert(srcs);
					/**************************/
					console.log("图片大小:" + this.files[0].size / 1024 + "     图片类型:" + this.files[0].type + "    图片名字:" + this.files[0].name + "     图片上次修改时间:" + this.files[0].lastModifiedDate);
					/*************************/
					$(this).next('img').attr('src', srcs).next('span.closer').show();
					$(this).parent('div').after(strs);
				});
				$("body").on('click', 'div.imgers span.closer', function() {
					if ($("div.imgers").length > 1) {
						$(this).parent('div.imgers').remove();
					} else {
						$("div.imgers input[type='file']").val('');
						$(this).hide().prev('img').attr('src', 'img/btn.png');
					}
				});
			})
		</script>
		 
	</head>

	<body>
		<div class="imger">
			<input type="file" />
			<img src="img/btn.png" />
			<span class="closer">X</span>
		</div>
		<div class="imger">
			<input type="file" />
			<img src="img/btn.png" />
			<span class="closer">X</span>
		</div>
		<div class="imgers imger">
			<input type="file" />
			<img src="img/btn.png" />
			<span class="closer">X</span>
		</div>

	</body>

</html>

自己动手写jQuery插件
<!DOCTYPE html>
<html>

	<head>
		<meta charset="utf-8" />
		<script type="text/javascript" src="js/jquery.min.js"></script>
		<script type="text/javascript" src="js/imger.js"></script>
		<title></title>
		<style type="text/css">
			div.imger {
				width: 182px;
				height: 142px;
				border: 1px solid green;
				position: relative;
			}
			
			div.imger input {
				position: absolute;
				opacity: 0;
				display: block;
				width: 100%;
				height: 100%;
				z-index: 10;
			}
			
			div.imger img {
				display: block;
				position: absolute;
				width: 100%;
				height: 100%;
				z-index: 1;
			}
			
			div.imger span.closer {
				position: absolute;
				top: 10px;
				right: 10px;
				color: red;
				z-index: 10;
				cursor: pointer;
				display: none;
			}
			
			div.imgers {
				float: left;
				margin: 5px 10px 5px;
				border: 1px solid red;
			}
		</style>
		<script type="text/javascript">
			$(function() {
				$("div.imger").imgers({
					width: '182', //这两个参数没用上
					height: '142',
					autoplus: false
				});
				$("div.imgers").imgers({
					width: '182', //这两个参数没用上
					height: '142',
					autoplus: true
				});
			})
		</script>

	</head>

	<body>
		<div class="imger">
			<input type="file" />
			<img src="img/btn.png" />
			<span class="closer">X</span>
		</div>
		<div class="imger">
			<input type="file" />
			<img src="img/btn.png" />
			<span class="closer">X</span>
		</div>
		<div class="imgers imger">
			<input type="file" />
			<img src="img/btn.png" />
			<span class="closer">X</span>
		</div>

	</body>

</html>

imgers.js
;
(function($) {
	$.fn.imgers = function(options) {
		var local_val = {
			width: '100', //长
			height: '100', //宽
			autoplus: false //自动增加
		};

		function getObjectURL(file) {
			var url = null;
			if (window.createObjectURL != undefined) {
				url = window.createObjectURL(file)
			} else if (window.URL != undefined) {
				url = window.URL.createObjectURL(file)
			} else if (window.webkitURL != undefined) {
				url = window.webkitURL.createObjectURL(file)
			}
			return url
		};
		var strs = '<div class="imgers imger">' +
			'<input type="file" />' +
			'<img src="img/btn.png" />' +
			'<span class="closer">X</span>' +
			'</div>';
		var obj = $.extend({}, local_val, options);
		console.log(obj);
		$("div.imger").on('click', 'span.closer', function() {
			$("div.imger input[type='file']").val('');
			$(this).hide().prev('img').attr('src', 'img/btn.png');
		});
		$("body").on('click', 'div.imgers span.closer', function() {
			if ($("div.imgers").length > 1) {
				$(this).parent('div.imgers').remove();
			} else {
				$("div.imgers input[type='file']").val('');
				$(this).hide().prev('img').attr('src', 'img/btn.png');
			}
		});

		if (obj.autoplus) {
			$("body").on('change', 'div.imgers input', function() {
				var srcs = getObjectURL(this.files[0]);
				alert(srcs);
				/**************************/
				console.log("图片大小:" + this.files[0].size / 1024 + "     图片类型:" + this.files[0].type + "    图片名字:" + this.files[0].name + "     图片上次修改时间:" + this.files[0].lastModifiedDate);
				/*************************/
				$(this).next('img').attr('src', srcs).next('span.closer').show();
				$(this).parent('div').after(strs);
			})
		} else {
			$("body").on('change', 'div.imger input', function() {
				var srcs = getObjectURL(this.files[0]);
				alert(srcs);
				/**************************/
				console.log("图片大小:" + this.files[0].size / 1024 + "     图片类型:" + this.files[0].type + "    图片名字:" + this.files[0].name + "     图片上次修改时间:" + this.files[0].lastModifiedDate);
				var tuozhanming = (this.files[0].name).split('.');
				console.log("文件拓展名:" + tuozhanming[1]);
				/*************************/
				$(this).next('img').attr('src', srcs).next('span.closer').show();
			})
		}

	}
	return this
})(jQuery);



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个利用Element Plus的带图片的添加页面示例: ```vue <template> <div class="add-page"> <el-form :model="form" label-width="120px"> <el-form-item label="商品名称"> <el-input v-model="form.name" placeholder="请输入商品名称"></el-input> </el-form-item> <el-form-item label="商品价格"> <el-input-number v-model="form.price" :min="0" :max="9999" :step="0.01"></el-input-number> </el-form-item> <el-form-item label="商品图片"> <el-upload action="" :file-list="form.imageList" :show-file-list="false" list-type="picture-card" :on-success="handleUploadSuccess" :before-upload="beforeUpload" :on-exceed="handleExceed" :limit="1" > <i class="el-icon-plus"></i> </el-upload> </el-form-item> <el-form-item label="商品描述"> <el-input v-model="form.description" type="textarea" rows="4"></el-input> </el-form-item> <el-form-item> <el-button type="primary" @click="handleSubmit">提交</el-button> <el-button @click="handleReset">重置</el-button> </el-form-item> </el-form> </div> </template> <script> export default { data() { return { form: { name: '', price: '', imageList: [], description: '' } } }, methods: { beforeUpload(file) { const isJPG = file.type === 'image/jpeg' || file.type === 'image/png' if (!isJPG) { this.$message.error('上传图片只能是 JPG 或 PNG 格式!') } const isLt2M = file.size / 1024 / 1024 < 2 if (!isLt2M) { this.$message.error('上传图片大小不能超过 2MB!') } return isJPG && isLt2M }, handleUploadSuccess(response, file, fileList) { this.form.imageList.push({ url: URL.createObjectURL(file.raw), name: file.name }) }, handleExceed(files, fileList) { this.$message.warning(`当前限制选择 1 张图片,本次选择了 ${files.length} 张图片,已自动筛选前一张!`) fileList.splice(1) }, handleSubmit() { // 提交表单逻辑 }, handleReset() { this.form.name = '' this.form.price = '' this.form.imageList = [] this.form.description = '' } } } </script> <style lang="scss" scoped> .add-page { .el-form-item__label { font-weight: bold; } .el-upload { width: 120px; height: 120px; border: 1px dashed #d9d9d9; border-radius: 4px; background-color: #f7f7f7; margin-top: 10px; .el-icon-plus { font-size: 28px; color: #999; line-height: 120px; } img { width: 100%; height: 100%; object-fit: cover; } } } </style> ``` 在这个示例中,我们使用了`el-upload`组件来实现图片上传功能,并对上传的图片进行格式、大小的限制,同时在上传成功后将图片预览到页面上。你可以根据需求对页面进行样式和逻辑的修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值