1、定义UI结构
| |
| <script src="./lib/jquery.js"></script> |
| |
| |
| <input type="file" id="file1" /> |
| |
| <button id="btnUpload">上传</button> |
复制
2、验证是否选择了文件
| $('#btnUpload').on('click', function() { |
| |
| var files = $('#file1')[0].files |
| |
| if (files.length <= 0) { |
| return alert('请选择图片后再上传!‘) |
| } |
| }) |
| |
复制
3、向FormData中追加文件
| |
| var fd = new FormData() |
| fd.append('avatar', files[0]) |
复制
4、使用jQuery发起上传文件的请求
| $.ajax({ |
| method: 'POST', |
| url: 'http://www.liulongbin.top:3006/api/upload/avatar', |
| data: fd, |
| |
| contentType: false, |
| |
| processData: false, |
| success: function(res) { |
| console.log(res) |
| } |
| }) |
复制
5、ajaxStart(callback)
Ajax 请求开始时,执行 ajaxStart 函数。可以在 ajaxStart 的 callback 中显示 loading 效果,示例代码如下:
| |
| $(document).ajaxStart(function() { |
| $('#loading').show() |
| }) |
复制
注意: $(document).ajaxStart() 函数会监听当前文档内所有的 Ajax 请求。
6、ajaxStop(callback)
Ajax 请求结束时,执行 ajaxStop 函数。可以在 ajaxStop 的 callback 中隐藏 loading 效果,示例代码如下:
| |
| $(document).ajaxStop(function() { |
| $('#loading').hide() |
| }) |
复制
7、完整示例代码

| <!DOCTYPE html> |
| <html lang="en"> |
| |
| <head> |
| <meta charset="UTF-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| <meta http-equiv="X-UA-Compatible" content="ie=edge"> |
| <title>Document</title> |
| <script src="./lib/jquery.js"></script> |
| </head> |
| |
| <body> |
| |
| <input type="file" id="file1" /> |
| <button id="btnUpload">上传文件</button> |
| |
| <br /> |
| <img src="./images/loading.gif" alt="" style="display: none;" id="loading" /> |
| |
| <script> |
| $(function () { |
| |
| $(document).ajaxStart(function () { |
| $('#loading').show() |
| }) |
| |
| |
| $(document).ajaxStop(function () { |
| $('#loading').hide() |
| }) |
| |
| $('#btnUpload').on('click', function () { |
| var files = $('#file1')[0].files |
| if (files.length <= 0) { |
| return alert('请选择文件后再上传!') |
| } |
| |
| var fd = new FormData() |
| fd.append('avatar', files[0]) |
| |
| |
| $.ajax({ |
| method: 'POST', |
| url: 'http://www.liulongbin.top:3006/api/upload/avatar', |
| data: fd, |
| |
| processData: false, |
| contentType: false, |
| |
| success: function (res) { |
| console.log(res) |
| } |
| }) |
| }) |
| }) |
| </script> |
| |
| </body> |
| |
| </html> |
复制