使用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 相关文章推荐
Extjs 3.3切换tab隐藏相应工具栏出现空白解决
Apr 02 Javascript
基于jQuery.Validate验证库知识点的详解
Apr 26 Javascript
node.js中的emitter.emit方法使用说明
Dec 10 Javascript
使用npm发布Node.JS程序包教程
Mar 02 Javascript
浅析创建javascript对象的方法
May 13 Javascript
js实现控制textarea输入字符串的个数,鼠标按下抬起判断输入字符数
Oct 25 Javascript
JS button按钮实现submit按钮提交效果
Nov 01 Javascript
HTML5canvas 绘制一个圆环形的进度表示实例
Dec 16 Javascript
详解webpack提取第三方库的正确姿势
Dec 22 Javascript
axios的拦截请求与响应方法
Aug 11 Javascript
jquery实现垂直手风琴导航栏
Feb 18 jQuery
jQuery实现html可联动的百分比进度条
Mar 26 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面向对象的方法重载两种版本比较
2008/09/08 PHP
PHP模块 Memcached功能多于Memcache
2011/06/14 PHP
js控制div及网页相关属性的代码
2009/12/19 Javascript
锋利的jQuery jQuery中的DOM操作
2010/03/21 Javascript
jQuery验证Checkbox是否选中的代码 推荐
2011/09/04 Javascript
JQuery each()函数如何优化循环DOM结构的性能
2012/12/10 Javascript
js取得url地址参数实例
2013/02/22 Javascript
JavaScript数组随机排列实现随机洗牌功能
2015/03/19 Javascript
JS建造者模式基本用法实例分析
2015/06/30 Javascript
JavaScript中innerHTML,innerText,outerHTML的用法及区别
2015/09/01 Javascript
jQuery代码实现图片墙自动+手动淡入淡出切换效果
2016/05/09 Javascript
jQuery实现点击按钮文字变成input框点击保存变成文字
2016/05/09 Javascript
AngularJS基础 ng-selected 指令简单示例
2016/08/03 Javascript
Vue 将后台传过来的带html字段的字符串转换为 HTML
2018/03/29 Javascript
javascript自定义右键菜单插件
2019/12/16 Javascript
JS实现网页端猜数字小游戏
2020/03/06 Javascript
jquery实现简易验证插件封装
2020/09/13 jQuery
使用python检测手机QQ在线状态的脚本代码
2013/02/10 Python
理解Python中函数的参数
2015/04/27 Python
python实现连连看游戏
2020/02/14 Python
Python: glob匹配文件的操作
2020/12/11 Python
python xlsxwriter模块的使用
2020/12/24 Python
都柏林通行卡/城市通票:The Dublin Pass
2020/02/16 全球购物
自主招生自荐书
2013/11/29 职场文书
中专生求职自荐信范文
2013/12/22 职场文书
大学生职业生涯规划书模板
2014/01/03 职场文书
单位在职证明范本
2014/01/09 职场文书
中层竞聘演讲稿
2014/01/09 职场文书
丑小鸭教学反思
2014/02/03 职场文书
提拔干部考察材料
2014/05/26 职场文书
营销团队口号
2014/06/06 职场文书
教师节横幅标语
2014/10/08 职场文书
2015新生加入学生会自荐书
2015/03/24 职场文书
商场广播稿范文
2015/08/19 职场文书
2019财务转正述职报告
2019/06/27 职场文书
导游词之寿县报恩寺
2020/01/19 职场文书