【jQuery】将文件拖拽到页面或某个区域内实现上传

实现效果:

 代码如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>拖拽到页面区域内上传文件</title>
<style type="text/css">
.container {
	height: 500px;
}

.mask-zone {
	width: 100%;
	height: 100%;
	position: absolute;
	background: rgba(97, 160, 255, 0.2);
	top: 0;
	left: 0;
	z-index: 100;
	cursor: pointer;
	transition: all 0.15s;
	border: 3px dashed #61A0FF;
	border-radius: 10px;
}
</style>
</head>
<body>
	<div class="container">
		<div style="border: 1px solid; height: 100%;" id="centerContent">将文件拖拽到页面或某个区域内即可上传</div>
	</div>
</body>
<script
	src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"
	type="text/javascript"></script>
<script type="text/javascript">
	var dragFiles = [];

	//拖拽导入word或excel文件功能-yan
	var lastenter = null;
	$('#centerContent').bind('dragenter', function(e) {
		lastenter = e.target; // 记录最后进入的元素
		//阻止浏览器默认打开文件的操作
		e.preventDefault();
		//拖入文件后加遮罩层
		if ($('#centerContent .mask-zone').length == 0) {
			$('#centerContent').append('<div class="mask-zone"></div>');
		}
	})
	// 在ie下需要增加如下代码,否则不会触发drop事件
	$('#centerContent').bind('dragover', function(ev) {
		ev.preventDefault();
	});
	$('#centerContent').bind('dragleave', function(e) {
		// 如果此时退的元素是最后进入的元素,说明是真正退出了`drag-zone`元素
		if (lastenter === e.target) {
			$('.mask-zone').remove();
		}
	})
	$('#centerContent').bind(
			'drop',
			function(e) {
				$('.mask-zone').remove();
				//阻止浏览器默认打开文件的操作
				e.preventDefault();
				//获取到的files即上传的文件对象
				var files = e.originalEvent.dataTransfer.files;

				var fileName = files[0].name;
				if (files.length > 1) {
					layer.msg('请上传单个文件!');
					return;
				}
				var fileNameArr = fileName.split('.');
				//限制文件类型
				if (fileNameArr[fileNameArr.length - 1] != 'doc'
						&& fileNameArr[fileNameArr.length - 1] != 'docx'
						&& fileNameArr[fileNameArr.length - 1] != 'xls'
						&& fileNameArr[fileNameArr.length - 1] != 'xlsx') {
					layer.msg('请上传word或excel文档!');
					return;
				}
				dragFiles = files;
				//进行上传操作,例如拼接参数,ajax调用上传接口等
				//...
			})
</script>
</html>

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值