使用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基本编码模式小结
May 23 Javascript
浅析js中2个等号与3个等号的区别
Aug 06 Javascript
js 数组操作之pop,push,unshift,splice,shift
Jan 29 Javascript
分享一款基于jQuery的视频播放插件
Oct 09 Javascript
Javascript基础教程之数据类型 (字符串 String)
Jan 18 Javascript
老生常谈遮罩层 滚动条的问题
Apr 29 Javascript
Javascript+CSS3实现进度条效果
Oct 28 Javascript
Angular企业级开发——MVC之控制器详解
Feb 20 Javascript
jQuery插件FusionCharts实现的3D帕累托图效果示例【附demo源码】
Mar 25 jQuery
vue 权限认证token的实现方法
Jul 17 Javascript
JavaScript 预解析的4种实现方法解析
Sep 03 Javascript
JavaScript实现Excel表格效果
Feb 07 Javascript
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获取url字符串截取路径的文件名和扩展名的函数
2010/01/22 PHP
PHP采用超长(超大)数字运算防止数字以科学计数法显示的方法
2016/04/01 PHP
PHP自定义多进制的方法
2016/11/03 PHP
PC端微信扫码支付成功之后自动跳转php版代码
2017/07/07 PHP
PDO::errorCode讲解
2019/01/28 PHP
PHP实现chrome表单请求数据转换为接口使用的json数据
2021/03/04 PHP
JS分页效果示例
2013/10/11 Javascript
js中小数转换整数的方法
2014/01/26 Javascript
深入理解JavaScript系列(17):面向对象编程之概论详细介绍
2015/03/04 Javascript
jQuery弹出层后禁用底部滚动条(移动端关闭回到原位置)
2016/08/29 Javascript
jQuery实现删除li节点的方法
2016/12/06 Javascript
JS+DIV实现的卷帘效果示例
2017/03/22 Javascript
AngularJS中filter的使用实例详解
2017/08/25 Javascript
MUI顶部选项卡的用法(tab-top-webview-main)详解
2017/10/08 Javascript
js将当前时间格式化为 年-月-日 时:分:秒的实现代码
2018/01/20 Javascript
用Python编写一个简单的俄罗斯方块游戏的教程
2015/04/03 Python
说一说Python logging
2016/04/15 Python
django ajax json的实例代码
2018/05/29 Python
Python判断两个文件是否相同与两个文本进行相同项筛选的方法
2019/03/01 Python
使用Python检测文章抄袭及去重算法原理解析
2019/06/14 Python
Python实现串口通信(pyserial)过程解析
2019/09/25 Python
用Python去除图像的黑色或白色背景实例
2019/12/12 Python
HTML5的语法变化介绍
2013/08/13 HTML / CSS
Blue Nile蓝色尼罗河香港官网:世界最大在线钻石珠宝销售商
2020/05/07 全球购物
历史学专业毕业生求职信
2013/09/27 职场文书
普师专业个人自荐信范文
2013/11/26 职场文书
初三政治教学反思
2014/01/30 职场文书
会计岗位描述
2014/02/22 职场文书
老同学聚会感言
2014/02/23 职场文书
文明寄语大全
2014/04/11 职场文书
共筑中国梦演讲稿
2014/04/23 职场文书
2014年人事工作总结范文
2014/11/19 职场文书
2016年清明节红领巾广播稿
2015/12/17 职场文书
煤矿安全学习心得体会
2016/01/18 职场文书
导游词之桂林
2019/08/20 职场文书
OpenCV中resize函数插值算法的实现过程(五种)
2021/06/05 Python