首页 前端知识 6.jQuery中的Ajax上传文件

6.jQuery中的Ajax上传文件

2024-06-09 09:06:22 前端知识 前端哥 386 293 我要收藏

目录

1  上传文件

2  loading效果


1  上传文件

后端接到数据后保存在upload_file文件夹下

前端依然使用FormData处理文件

contentType:false的意思是 使用FormData默认的Content-Type值

processData:false的意思是 不对FormData中的数据进行url编码,而是将FormData数据原样发送到服务器

2  loading效果

需要先搞一个这样的gif

让其在上传开始时显示,其余时间不显示

<!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>
    <style>
        img {
            display:none;
            width:200px;
            height:200px;
        }
    </style>
</head>
<body>
    <input type="file">
    <button>上传文件</button>
    <img src="loading.gif" alt="">
</body>
<script src="../../jquery-3.6.1.min.js"></script>
<script>
    $(document).ajaxStart(function() {
        $('img').show()
    })

    $(document).ajaxStop(function() {
        $('img').hide()
    })


    $('button').on('click',function() {
        files = $('input')[0].files
        if (files.length <= 0) {
            return alert('请选择要上传的文件')
        }

        FormData_obj = new FormData()
        FormData_obj.append('file',files[0])

        $.ajax({
            type:'POST',
            url:'http://127.0.0.1:5000/upload',
            data:FormData_obj,
            contentType:false,
            processData:false,
            success:function(res) {
                console.log(res)
            }
        })
    })
</script>
</html>

Ajax请求开始时会执行ajaxStart(),自jQuery1.8后,ajaxstart()只能给document,因为只能给document所以ajaxStart会监听当前document内所有的Ajax请求

Ajax请求结束时会执行ajaxStop()

除此之外还有很多请求的方法,详细可以看一下文档 jQuery 参考手册 - Ajax

上传过程中会显示loading.gif

上传完成后会消失

转载请注明出处或者链接地址:https://www.qianduange.cn//article/11657.html
标签
评论
发布的文章
大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!