使用Ajax实现无刷新上传文件


Posted in Javascript onApril 12, 2022

最终效果展示

使用Ajax实现无刷新上传文件

xhr发起请求

<!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>
    <link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="external nofollow" >
    <script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script>
    <script src="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
 
<body>
    <!--1、文件选择框  -->
    <input type="file" id="file1">
    <!-- 2、上传文件的按钮 -->
    <button id="btnupload">上传文件</button>
    <br/>
    <div class="progress" style="width:300px;margin:5px;">
        <div class="progress-bar progress-bar-striped active" style="width: 0%;" id="precent">
            0%
        </div>
    </div>
    <!-- 3、img标签 来显示上传成功以后的图片 -->
    <img alt="" id="img" width="800">
 
    <script>
       var precent = document.querySelector('#precent')
        var btnupload = document.querySelector('#btnupload')
        btnupload.addEventListener('click', function() {
            var files = document.querySelector('#file1').files
            if (files.length <= 0) {
                return alert('请选择要上传的文件')
            }
 
            var fd = new FormData()
            fd.append('avatar', files[0])
            var xhr = new XMLHttpRequest()
 
            xhr.upload.onprogress = function(e) {
                console.log(e);
                if (e.lengthComputable) {
                    var h = Math.ceil((e.loaded / e.total) * 100)
                    precent.style.width = h + '%'
                    precent.innerHTML = h + '%'
                    console.log(h);
                }
            }
            xhr.upload.onload = function() {
                $('#precent').removeClass().addClass('progress-bar progress-bar-success')
            }
 
            xhr.open('post', 'http://www.liulongbin.top:3006/api/upload/avatar')
            xhr.send(fd)
            xhr.onreadystatechange = function() {
                if (xhr.readyState == 4 && xhr.status == 200) {
                    var data = JSON.parse(xhr.responseText)
                    console.log(data);
                    if (data.status == 200) {
                        console.log('上传成功');
                        document.querySelector('#img').src = 'http://www.liulongbin.top:3006' + data.url
                    } else {
                        console.log('上传失败');
                    }
                }
            }
        })
    </script>
</body>
 
</html>

ajax发起请求

<!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>
    <script src="jquery.js"></script>
    <style>
        img {
            width: 50px;
            height: 50px;
            display: none;
        }
    </style>
</head>
 
<body>
    <input type="file" id="file1">
    <button id="btnupload">上传文件</button>
    </br>
    <img src="5-121204193R5-50.gif" alt="" 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) {
                    alert('请选择文件')
                }
                console.log('ok');
                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>

到此这篇关于Ajax实现上传图像功能的示例详解的文章就介绍到这了!

Javascript 相关文章推荐
javascript 避免闭包引发的问题
Mar 17 Javascript
js设置文本框中焦点位置在最后的示例代码(简单实用)
Mar 04 Javascript
JavaScript字符串对象substr方法入门实例(用于截取字符串)
Oct 16 Javascript
Jquery动态替换div内容及动态展示的方法
Jan 23 Javascript
jquery.fastLiveFilter.js实现输入自动过滤的方法
Aug 11 Javascript
JS非Alert实现网页右下角“未读信息”效果弹窗
Sep 26 Javascript
使用jQuery给input标签设置默认值
Jun 20 Javascript
深入理解React中es6创建组件this的方法
Aug 29 Javascript
node前端开发模板引擎Jade的入门
May 11 Javascript
利用d3.js力导布局绘制资源拓扑图实例教程
Jan 08 Javascript
微信小程序实现导航栏和内容上下联动功能代码
Jun 29 Javascript
jquery实现简单拖拽效果
Jul 20 jQuery
vue报错function () { [native code] },无法出现我们想要的内容 Unknown custom element
vue选项卡切换的实现案例
分享一个vue实现的记事本功能案例
vue代码分块和懒加载非必要资源文件
Apr 11 #Vue.js
vue打包时去掉所有的console.log
三种方式清除vue路由跳转router-link的历史记录
Apr 10 #Vue.js
vue route新窗口跳转页面并且携带与接收参数
Apr 10 #Vue.js
You might like
php email邮箱正则
2008/10/08 PHP
php 无限级 SelectTree 类
2009/05/19 PHP
基于PHP Web开发MVC框架的Smarty使用说明
2013/04/19 PHP
php获取指定日期之间的各个周和月的起止时间
2014/11/24 PHP
thinkphp微信开发(消息加密解密)
2015/12/02 PHP
php fread读取文件注意事项
2016/09/24 PHP
ThinkPHP5+Layui实现图片上传加预览功能
2018/08/17 PHP
Javascript - HTML的request类
2006/07/15 Javascript
javascript 面向对象编程 function也是类
2009/09/17 Javascript
$.format,jquery.format 使用说明
2011/07/13 Javascript
优化javascript的执行效率一些方法总结
2013/12/25 Javascript
js+flash实现的5图变换效果广告代码(附演示与demo源码下载)
2016/04/01 Javascript
Bootstrap树形菜单插件TreeView.js使用方法详解
2016/11/01 Javascript
解决BootStrap Fileinput手机图片上传显示旋转问题
2017/06/01 Javascript
vue实现图片加载完成前的loading组件方法
2018/02/05 Javascript
js实现input密码框显示/隐藏功能
2020/09/10 Javascript
鸿蒙系统中的 JS 开发框架
2020/09/18 Javascript
python实现网页链接提取的方法分享
2014/02/25 Python
Python利用pandas计算多个CSV文件数据值的实例
2018/04/19 Python
PyQt5实现类似别踩白块游戏
2019/01/24 Python
Python实现的IP端口扫描工具类示例
2019/02/15 Python
Python实战之制作天气查询软件
2019/05/14 Python
Python中请不要再用re.compile了
2019/06/30 Python
利用pandas合并多个excel的方法示例
2019/10/10 Python
Pytorch evaluation每次运行结果不同的解决
2020/01/02 Python
python 中的[:-1]和[::-1]的具体使用
2020/02/13 Python
pip已经安装好第三方库但pycharm中import时还是标红的解决方案
2020/10/09 Python
Django多数据库联用实现方法解析
2020/11/12 Python
HTML5页面无缝闪开的问题及解决方案
2020/06/11 HTML / CSS
后勤园长自我鉴定
2013/10/17 职场文书
日语专业毕业生求职信
2013/12/04 职场文书
致200米运动员广播稿
2014/02/06 职场文书
教师个人读书活动总结
2014/07/08 职场文书
社区活动策划方案
2014/08/21 职场文书
房屋出售授权委托书
2014/10/12 职场文书
责任书格式
2019/04/18 职场文书