<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="./lib/jquery.js"></script>
<title></title>
</head>
<body>
<input type="file" id="file1" />
<img src="layui/css/modules/layer/default/loading-0.gif" class="loading" style="display: none;"/>
<img src="layui/css/modules/layer/default/loading-1.gif" class="loading" style="display: none;"/>
<img src="layui/css/modules/layer/default/loading-2.gif" class="loading" style="display: none;" />
<img src="./loading.gif" class="loading" style="display: none;"/>
<button id="sendFile">上传文件</button>
<script>
$(function(){
// 为发送文件按钮绑定单价事件,,判断是否上传了文件
$('#sendFile').on('click',function(){
// 【0】表示转换为原生的dom对象,使用files属性访问文件列表
var files = $('#file1')[0].files
if(files.length <=0 ){
return alert('请选择文件后再上传!')
}
// console.log('ok')
// 使用jQuery发起上传文件请求
var fd = new FormData()
fd.append('avatar',files[0])
$.ajax({
type:'post',
url:'http://www.liulongbin.top:3006/api/upload/avatar',
data:fd,
processData:false,
contentType:false,
success:function(res){
console.log(res)
}
})
})
//点击上传文件后加载图片显示
$(document).ajaxStart(function(){
$('.loading').show()
})
// 文件上传完成后加载图片消失
$(document).ajaxStop(function(){
$('.loading').hide()
})
})
</script>
</body>
</html>
//首先封装一个方法 返回一个绑定了监听函数的XMLHttpRequest对象
var xhrOnProgress=function(fun) {
xhrOnProgress.onprogress = fun; //绑定监听
//使用闭包实现监听绑
return function() {
//通过$.ajaxSettings.xhr();获得XMLHttpRequest对象
var xhr = $.ajaxSettings.xhr();
//判断监听函数是否为函数
if (typeof xhrOnProgress.onprogress !== 'function')
return xhr;
//如果有监听函数并且xhr对象支持绑定时就把监听函数绑定上去
if (xhrOnProgress.onprogress && xhr.upload) {
xhr.upload.onprogress = xhrOnProgress.onprogress;
}
return xhr;
}
}
var data = new FormData(); //创建一个新的表单对象
var file = $(".file_choose")[0].files[0]; //.file_choose应当为一个上传文件表单
data.append("data", file); //将文件存放至表单对象,若有其他需要提交的数据,都可以使用此方法
$.ajax({
method: 'POST', //上传方式
url: "upload_url", //上传地址
processData: false, //让ajax不要序列化data
contentType: false, //让ajax不要操作content-type
data: data, //上传的数据
//调用监听函数
xhr:xhrOnProgress(function(evt){
var percent = evt.loaded / evt.total * 100;//计算百分比
if(percent < 99.9){
percent = "已上传 " + percent.toFixed(2) + "%";
}else{
percent = "视频处理中,请稍后...";
}
$(".loading .layui-layer-content").text(percent); //将进度显示在界面
}),
success: function (data) {
$(".loading").hide();
swal({ //此处使用sweetalert插件
title: "上传成功",
type: "success",
showCancelButton: false,
confirmButtonColor: "#18A689",
confirmButtonText: "关闭",
closeOnConfirm: false
}, function () {
window.location.href="/admin/alist";
});
},
beforeSend: function() { //发送ajax前,将进度界面显示出来
$(".shade2").show();
$(".loading").show();
}
});