使用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 CSS修改学习第五章 给“上传”添加样式
Feb 19 Javascript
javascript模拟的Ping效果代码 (Web Ping)
Mar 13 Javascript
IE的有条件注释判定IE版本详解(附实例代码)
Jan 04 Javascript
对之前写的jquery分页做下升级
Jun 19 Javascript
node.js中的http.response.getHeader方法使用说明
Dec 14 Javascript
js实现点击图片自动提交action的简单方法
Oct 16 Javascript
JS正则替换去空格的方法
Mar 24 Javascript
详解webpack+es6+angular1.x项目构建
May 02 Javascript
学习使用Bootstrap页面排版样式
May 11 Javascript
BootStrap模态框和select2合用时input无法获取焦点的解决方法
Sep 01 Javascript
javascript实现前端分页功能
Nov 26 Javascript
Vue+TypeScript中处理computed方式
Apr 02 Vue.js
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
Windows2003 下 MySQL 数据库每天自动备份
2006/12/21 PHP
PHP中return 和 exit 、break和contiue 区别与用法
2012/04/09 PHP
解析mysql left( right ) join使用on与where筛选的差异
2013/06/18 PHP
基于preg_match_all采集后数据处理的一点心得笔记(编码转换和正则匹配)
2014/01/31 PHP
PHP读取txt文本文件并分页显示的方法
2015/03/11 PHP
WordPress开发中用于获取近期文章的PHP函数使用解析
2016/01/05 PHP
Yii全局函数用法示例
2017/01/22 PHP
PHP7 安装event扩展的实现方法
2019/10/08 PHP
IE本地存储userdata的一个bug说明
2010/07/01 Javascript
JavaScript对象链式操作代码(jquery)
2010/07/04 Javascript
javascript动画对象支持加速、减速、缓入、缓出的实现代码
2012/09/30 Javascript
JavaScript中实现单体模式分享
2015/01/29 Javascript
js实现网页多级级联菜单代码
2015/08/20 Javascript
JavaScript必知必会(五) eval 的使用
2016/06/08 Javascript
详解vue中点击空白处隐藏div的实现(用指令实现)
2018/04/19 Javascript
element日历calendar组件上月、今天、下月、日历块点击事件及模板源码
2020/07/27 Javascript
JS+JQuery实现无缝连接轮播图
2020/12/30 jQuery
[01:00:04]DOTA2上海特级锦标赛B组小组赛#1 Alliance VS Spirit第二局
2016/02/26 DOTA
python 字符串格式化代码
2013/03/17 Python
使用Python装饰器在Django框架下去除冗余代码的教程
2015/04/16 Python
在Python中处理字符串之isdecimal()方法的使用
2015/05/20 Python
python3实现暴力穷举博客园密码
2016/06/19 Python
python寻找list中最大值、最小值并返回其所在位置的方法
2018/06/27 Python
pandas使用get_dummies进行one-hot编码的方法
2018/07/10 Python
pandas读取CSV文件时查看修改各列的数据类型格式
2019/07/07 Python
Pycharm安装并配置jupyter notebook的实现
2020/05/18 Python
python 装饰器的实际作用有哪些
2020/09/07 Python
解决PyCharm无法使用lxml库的问题(图解)
2020/12/22 Python
HTML5 File接口在web页面上使用文件下载
2017/02/27 HTML / CSS
纽约的奢华内衣店:Journelle
2016/07/29 全球购物
StubHub墨西哥:购买和出售您的门票
2016/09/17 全球购物
英国香水店:The Perfume Shop
2017/03/27 全球购物
终端业务员岗位职责
2013/11/27 职场文书
消防安全宣传口号
2014/06/10 职场文书
装修活动策划方案
2014/08/27 职场文书
Python中npy和mat文件的保存与读取
2022/04/24 Python