ajax上传文件(input标签的type="file"属性)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/littlebearGreat/article/details/80599588

input标签的type="file"很方便,但是原生的巨丑,提交也不方便。

然后,就包装了一下,写个demo,下面是代码

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>上传</title>
	<script type="text/javascript" src="jquery.js"></script>
	<style type="text/css">
		.btn{
			display: inline-block;
			width: 120px;
			height: 40px;
			cursor: pointer;
			text-align: center;
			line-height: 40px;
			background-color: #409EFF;
			color: #fff;
			border-radius: 4px;
			letter-spacing: .4em;
			vertical-align: middle;
			margin-left: 40px;
		}
		#fileUpLoad{
			background-color: orange;
			width: 400px;
			height: 200px;
			opacity: 0;
			cursor: pointer;
		}
		.uploadBox{
			display: inline-block;
			position: relative;
			vertical-align: middle;
			outline: 1px solid #606266;
		}
		.uploadBox div{
			position: absolute;
			top: 0;
			width: 100%;
			height: 100%;
		}
		.uploadBox .prompt{
			z-index: -2;
		}
		.uploadBox .fileName{
			z-index: -1;
			line-height: 26px;
		    font-size: 14px;
		    padding: 10px;
		}
		.uploadBox div p{
			text-align: center;
			color: #909399;
			line-height: 70px;
		}
	</style>
</head>
<body>
	<h2>ajax上传文件</h2>
	<div>
		<div class="uploadBox">
			<div class="prompt">
				<p><i>请点击此处上传文件</i></p>
				<p><i>或拖动文件到此处</i></p>
			</div>
			<div class="fileName"></div>
			<input type="file" name="fileName" id="fileUpLoad">
		</div>
		<span class="btn">上传</span>
	</div>

<script type="text/javascript">
	$(function(){

		// 检测是否选择文件,如果选择,返回文件对象;如果没选择,返回false
		function checkFile(){
			// 获取文件对象(该对象的类型是[object FileList],其下有个length属性)
			var fileList = $('#fileUpLoad')[0].files;
			
			// 如果文件对象的length属性为0,就是没文件
			if (fileList.length === 0) {
				console.log('没选择文件');
				return false;
			};
			return fileList[0];
		};

		// 文件选择成功,显示文件名称
		$('#fileUpLoad').change(function(){
			var file = checkFile();
			if (!file) {
				return false;
			};

			var name = $('#fileUpLoad')[0].files[0].name;
			$('.fileName').text(name);
		});

		$('.btn').click(function(){
			var file = checkFile();
			if (!file) {
				alert('请先选择文件');
				return false;
			};

			// 构建form数据
			var formFile = new FormData();
            formFile.append("action", "UploadPath");
            //把文件放入form对象中  
            formFile.append("file", file); 

            // ajax提交
            $.ajax({
            	url: "",
               	data: formFile,
               	type: "POST",
               	dataType: "json",
               	cache: false,			//上传文件无需缓存
               	processData: false,		//用于对data参数进行序列化处理 这里必须false
               	contentType: false, 	//必须
               	success: function(result){
               		alert('上传成功');
               	},
               	error: function(result){
               		alert('上传失败');
               	}
            });
		});
	})
</script>
</body>
</html>

猜你喜欢

转载自blog.csdn.net/littlebearGreat/article/details/80599588