使用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 相关文章推荐
jQuery 性能优化手册 推荐
Feb 23 Javascript
jquery select多选框的左右移动 具体实现代码
Jul 03 Javascript
JavaSript中变量的作用域闭包的深入理解
May 12 Javascript
javascript实现的平方米、亩、公顷单位换算小程序
Aug 11 Javascript
深入理解JavaScript系列(46):代码复用模式(推荐篇)详解
Mar 04 Javascript
JQuery简单实现锚点链接的平滑滚动
May 03 Javascript
jQuery实现美观的多级动画效果菜单代码
Sep 06 Javascript
JavaScript实现cookie的写入、读取、删除功能
Nov 05 Javascript
详解Vue中过度动画效果应用
May 25 Javascript
VUE v-for循环中每个item节点动态绑定不同函数的实例
Sep 26 Javascript
JavaScript实现的弹出遮罩层特效经典示例【基于jQuery】
Jul 10 jQuery
浅谈layui分页控件field参数接收对象的问题
Sep 20 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中绘制图像的一些函数总结
2014/11/19 PHP
php截取视频指定帧为图片
2016/05/16 PHP
PHP简单判断iPhone、iPad、Android及PC设备的方法
2016/10/11 PHP
php显示页码分页类的封装
2017/06/08 PHP
Javascript学习笔记1 数据类型
2010/01/11 Javascript
腾讯UED 漂亮的提示信息效果代码
2011/09/12 Javascript
基于jQuery实现左右div自适应高度完全相同的代码
2012/08/09 Javascript
node.js中的querystring.unescape方法使用说明
2014/12/10 Javascript
javascript实现左右控制无缝滚动
2014/12/31 Javascript
jquery中添加属性和删除属性
2015/06/03 Javascript
jquery实现表格中点击相应行变色功能效果【实例代码】
2016/05/09 Javascript
JavaScript基础知识点归纳(推荐)
2016/07/09 Javascript
自动化测试读写64位操作系统的注册表
2016/08/15 Javascript
基于AngularJS的简单使用详解
2017/09/10 Javascript
vue解决跨域路由冲突问题思路解析
2017/11/03 Javascript
npm scripts 使用指南详解
2018/10/08 Javascript
详解easyui 切换主题皮肤
2019/04/04 Javascript
vue父子组件通信的高级用法示例
2019/08/29 Javascript
vuex管理状态 刷新页面保持不被清空的解决方案
2019/11/11 Javascript
vue中v-model对select的绑定操作
2020/08/31 Javascript
react中hook介绍以及使用教程
2020/12/11 Javascript
[01:45]DOTA2众星出演!DSPL刀塔次级职业联赛宣传片
2014/11/21 DOTA
python列表操作之extend和append的区别实例分析
2015/07/28 Python
django批量导入xml数据
2016/10/16 Python
python获取当前目录路径和上级路径的实例
2018/04/26 Python
Python3 字典dictionary入门基础附实例
2020/02/10 Python
python爬虫scrapy基于CrawlSpider类的全站数据爬取示例解析
2021/02/20 Python
一款利用纯css3实现的超炫3D表单的实例教程
2014/12/01 HTML / CSS
阿根廷网上配眼镜:SmartBuyGlasses阿根廷
2016/08/19 全球购物
英文版区域经理求职信
2013/10/23 职场文书
总经理秘书的岗位职责
2013/12/27 职场文书
家佳咖啡店创业计划书
2013/12/27 职场文书
天猫某品牌专卖店运营计划书
2014/03/21 职场文书
党员干部一句话承诺
2014/05/30 职场文书
后勤工作个人总结
2015/02/28 职场文书
详解MySQL事务的隔离级别与MVCC
2021/04/22 MySQL