目录
1 上传文件
2 loading效果
1 上传文件
后端接到数据后保存在upload_file文件夹下
前端依然使用FormData处理文件
contentType:false的意思是 使用FormData默认的Content-Type值
processData:false的意思是 不对FormData中的数据进行url编码,而是将FormData数据原样发送到服务器
2 loading效果
需要先搞一个这样的gif
让其在上传开始时显示,其余时间不显示
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> img { display:none; width:200px; height:200px; } </style> </head> <body> <input type="file"> <button>上传文件</button> <img src="loading.gif" alt=""> </body> <script src="../../jquery-3.6.1.min.js"></script> <script> $(document).ajaxStart(function() { $('img').show() }) $(document).ajaxStop(function() { $('img').hide() }) $('button').on('click',function() { files = $('input')[0].files if (files.length <= 0) { return alert('请选择要上传的文件') } FormData_obj = new FormData() FormData_obj.append('file',files[0]) $.ajax({ type:'POST', url:'http://127.0.0.1:5000/upload', data:FormData_obj, contentType:false, processData:false, success:function(res) { console.log(res) } }) }) </script> </html>
复制
Ajax请求开始时会执行ajaxStart(),自jQuery1.8后,ajaxstart()只能给document,因为只能给document所以ajaxStart会监听当前document内所有的Ajax请求
Ajax请求结束时会执行ajaxStop()
除此之外还有很多请求的方法,详细可以看一下文档 jQuery 参考手册 - Ajax
上传过程中会显示loading.gif
上传完成后会消失