使用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 函数调用的对象和方法
Jul 01 Javascript
jquery中使用ajax获取远程页面信息
Nov 13 Javascript
Javascript的常规数组和关联数组对比小结
May 24 Javascript
JQuery 获取json数据$.getJSON方法的实例代码
Aug 02 Javascript
js实现拉伸拖动iframe的具体代码
Aug 03 Javascript
利用jquery包将字符串生成二维码图片
Sep 12 Javascript
js实现从中间开始往上下展开网页窗口的方法
Mar 02 Javascript
jquery插件bxslider用法实例分析
Apr 16 Javascript
浅析上传头像示例及其注意事项
Dec 14 Javascript
jQuery文字轮播特效
Feb 12 Javascript
ajax接收后台数据在html页面显示
Feb 19 Javascript
js实现滚动条自动滚动
Dec 13 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
一个程序下载的管理程序(三)
2006/10/09 PHP
19个Android常用工具类汇总
2014/12/30 PHP
php+ajax制作无刷新留言板
2015/10/27 PHP
Smarty分页实现方法完整实例
2016/05/11 PHP
PHP 的Opcache加速的使用方法
2017/12/29 PHP
PHP手机短信验证码实现流程详解
2018/05/17 PHP
php+Ajax处理xml与json格式数据的方法示例
2019/03/04 PHP
关于 文本框默认值 的操作js代码
2012/01/12 Javascript
简单实用的全选反选按钮例子
2013/10/18 Javascript
JS+CSS实现简易的滑动门效果代码
2015/09/24 Javascript
jQuery on()绑定动态元素出现的问题小结
2016/02/19 Javascript
js 求时间差的实现代码
2016/04/26 Javascript
Javascript动画效果(4)
2016/10/11 Javascript
详解用原生JavaScript实现jQuery的某些简单功能
2016/12/19 Javascript
JQuery实现table中tr上移下移的示例(超简单)
2018/01/08 jQuery
vue2.0实现前端星星评分功能组件实例代码
2018/02/12 Javascript
js+SVG实现动态时钟效果
2018/07/14 Javascript
jquery 键盘事件 keypress() keydown() keyup()用法总结
2019/10/23 jQuery
独特的python循环语句
2016/11/20 Python
Python图像处理之直线和曲线的拟合与绘制【curve_fit()应用】
2018/12/26 Python
Python设计模式之备忘录模式原理与用法详解
2019/01/15 Python
使用python脚本自动创建pip.ini配置文件代码实例
2019/09/20 Python
Pandas DataFrame中的tuple元素遍历的实现
2019/10/23 Python
python中有关时间日期格式转换问题
2019/12/25 Python
HTML5打开本地app应用的方法
2016/03/31 HTML / CSS
世界领先的以旅馆为主的在线预订平台:Hostelworld
2016/10/09 全球购物
俄罗斯披萨、寿司和面食送货到家服务:2 Берега
2019/12/15 全球购物
Elizabeth Gage官网:英国最好的珠宝设计之一
2020/09/26 全球购物
七匹狼男装广告词
2014/03/21 职场文书
中层干部培训方案
2014/06/16 职场文书
个人授权委托书样本
2014/09/13 职场文书
文员试用期转正自我鉴定
2014/09/14 职场文书
幼儿园父亲节活动总结
2015/02/12 职场文书
对公司的意见和建议
2015/06/04 职场文书
患者身份识别制度
2015/08/06 职场文书
图书馆义工感想
2015/08/07 职场文书