前端js实现图片上传预览

18 篇文章 0 订阅
1 篇文章 0 订阅

前端js实现图片上传

前端js实现图片上传的原理是通过input标签的type=file属性将input标签定义为上传文件,对input进行onchange事件的监听,当input的value值改变时代表用户已经上传了图片,而input的value值就是用户上传的图片的相对路径,new一个FileReader对象,将图片转换成base64格式的编码,动态创建img标签并将转换后的编码赋值给img标签的src属性即可。

首先,进行页面布局,页面布局是用的浮动布局。

<div class="content clearFlex">
			<form action="" enctype="multipart/form-data">
				<div class="upImg clearFlex">
					<div class="imgOnloadWrap"></div>
					<div class="upWrap">
						<div class="fileWrap">
							<input type="file" accept="image/gif,image/jpeg,image/jpg,image/png,image/svg" οnchange="upImg(this)"/>
						</div>
						<div class="imgWrap">
							<img src="img/icon6.png" alt="" />
						</div>
					</div>
				</div>
			</form>
		</div>

其次对页面布局进行样式设计

.content{
	width:1000px;
	height: 800px;
	background:#fff;
	border-radius:10px;
	padding:10px;
	overflow-y: scroll;
	margin:0 auto;
	border:1px solid #333;
	border-color:rgba(169,169,169,1);
}
.upWrap{
	width:140px;
	height: 80px;
	margin:10px;
	float: left;
	position: relative;
}
.upWrap > .fileWrap,.upWrap > .fileWrap > input[type=file],.upWrap > .imgWrap{
	position: absolute;
	height: 100%;
	width:100%;
	top:0;
	left:0;
}
.upWrap > .fileWrap > input[type=file]{
	z-index: 2;
	opacity: 0;
}
.upWrap > .imgWrap{
	z-index: 1;
}
.upWrap > .imgWrap > img{
	width:100%;
	height: 100%;
}
.upedImg{
	z-index: 3 !important;
}
.upedImg > span.deleteImg{
	position:absolute;
	content: 'X';
	width:20px;
	font-size: 16px;
	color:#ff0000;
	background:rgba(0,0,0,0.6);
	height:20px;
	text-align: center;
	line-height: 20px;
	right:0;
	top:0;
	z-index:4;
}
.clearFlex:after{
	clear: both;
	content: '';
	display: block;
	height: 0;
	zoom:1;
}

最后对上传图片进行逻辑交互

/*------------------------------上传图片---------------------------*/
function upImg(obj){
	var imgFile = obj.files[0];
	console.log(imgFile);
	var img = new Image();
	var fr = new FileReader();
	fr.onload = function(){
		var htmlStr = '<div class="upWrap">';
		htmlStr += '<div class="fileWrap">';
		htmlStr += '<input type="file" accept="image/gif,image/jpeg,image/jpg,image/png,image/svg" οnchange="upImg(this)"/>';
		htmlStr += '</div>';
		htmlStr += '<div class="imgWrap upedImg"><span class="deleteImg">X</span>';
		htmlStr += '<img src="'+fr.result+'" alt="" />';
		htmlStr += '</div>';
		htmlStr += '</div>';
		$('.imgOnloadWrap').append(htmlStr);
		obj.value = '';
	}
	fr.readAsDataURL(imgFile);
}
/*-----------------------------删除图片------------------------------*/
$(document).on('click','.upedImg .deleteImg',function(){
	//处理未来事件
	$(this).parent().parent().remove();
})


  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
实现上传图片预览,需要以下步骤: 1. 在前端页面添加一个input标签,type属性设置为file,用于选择本地图片上传。 ``` <input type="file" id="fileInput" onchange="previewImage()"/> ``` 2. 在前端页面添加一个用于预览图片的标签,例如img标签。 ``` <img id="preview" src="" alt="预览图片" style="max-width:200px;max-height:200px;"> ``` 3. 在JavaScript实现预览图片的功能。 ``` function previewImage() { // 获取选择的文件对象 var file = document.getElementById("fileInput").files[0]; // 创建FileReader对象 var reader = new FileReader(); // 读取文件内容 reader.readAsDataURL(file); // 当文件读取完成时触发onload事件 reader.onload = function(e) { // 获取预览图片的标签对象 var preview = document.getElementById("preview"); // 设置预览图片的地址 preview.src = e.target.result; } } ``` 4. 在后端处理上传的图片实现上传图片的后端代码可以使用Java提供的Servlet或Spring MVC框架等进行实现。 以下是一个简单的Servlet上传图片的示例代码: ``` protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 获取上传的文件对象 Part part = request.getPart("file"); // 获取文件名 String fileName = part.getSubmittedFileName(); // 获取文件保存的路径 String savePath = request.getServletContext().getRealPath("/upload"); // 创建保存文件的目录 File saveDir = new File(savePath); if (!saveDir.exists()) { saveDir.mkdirs(); } // 生成保存文件的唯一名称 String uuid = UUID.randomUUID().toString(); String saveName = uuid + "_" + fileName; // 保存文件 part.write(savePath + File.separator + saveName); // 返回保存的文件路径 String filePath = request.getContextPath() + "/upload/" + saveName; response.getWriter().write(filePath); } ``` 在前端页面中,可以使用Ajax将选择的图片文件上传到后端进行处理,并将返回的文件路径设置到预览图片的标签中。 ``` function uploadImage() { var file = document.getElementById("fileInput").files[0]; // 创建FormData对象,用于封装需要上传的数据 var formData = new FormData(); formData.append("file", file); // 创建XMLHttpRequest对象 var xhr = new XMLHttpRequest(); // 设置请求方式和请求地址 xhr.open("POST", "/uploadServlet"); // 发送请求 xhr.send(formData); // 当请求状态改变时触发onreadystatechange事件 xhr.onreadystatechange = function() { if (xhr.readyState == 4 && xhr.status == 200) { // 获取预览图片的标签对象 var preview = document.getElementById("preview"); // 设置预览图片的地址 preview.src = xhr.responseText; } } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值