Ajax实现上传图像功能的示例详解

最终效果展示

xhr发起请求

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<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"><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><input type="file" id="file1"><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>
 
<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>

ajax发起请求

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<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><input type="file" id="file1"><button id="btnupload">上传文件</button>
 
<img decoding="async" 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>

到此这篇关于Ajax实现上传图像功能的示例详解的文章就介绍到这了,更多相关Ajax上传图像内容请搜索IT俱乐部以前的文章或继续浏览下面的相关文章希望大家以后多多支持IT俱乐部!

本文收集自网络,不代表IT俱乐部立场,转载请注明出处。https://www.2it.club/navsub/ajax/2036.html
上一篇
下一篇
联系我们

联系我们

在线咨询: QQ交谈

邮箱: 1120393934@qq.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部