ajax上传文件进度条功能示例代码

AJAX上传文件时,有时比较耗时,需要在界面上显示下进度信息,获取ajaxSettings中的xhr对象,为它的upload属性绑定progress事件的处理函数

前端代码

1

2

3

4

5

6

7

8

9

10

扫描二维码关注公众号,回复: 15298368 查看本文章

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

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

<!DOCTYPE html>

<html>

<head>

<meta charset="utf8">

<title>test upload</title>

<!--jquery-->

<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>

<script>

//页面加载完时加载此函数

        window.onload = function() 

        {

        $('#uploadBtnId').click(function(e)

        {

        $('#resultId').html();

        //使用FormData对象来提交整个表单,它支持文件的上传

   var formData=new FormData(document.getElementById("myFormId"));

   formData.append("ddd", 10); //也可使用append追加数据

$.ajax(

{

      url: 'do_upload.php',

      data: formData,

      contentType: false, //false: 自动加上正确的Content-Type

      processData: false,  //false: 避开jQuery对 formdata 的默认处理

      enctype: 'multipart/form-data',

      type: "POST",

      complete:function(res)

      {

      },

      success: function (res, status)

      {

$('#resultId').html(res);

      },

      error: function(res){

      //错误处理

      },

      xhr: function(){ //获取ajaxSettings中的xhr对象,为它的upload属性绑定progress事件的处理函数

           var myXhr = $.ajaxSettings.xhr();

           if(myXhr.upload){ //检查upload属性是否存在

               //绑定progress事件的回调函数

               $('#progressId').text(); //清空

               myXhr.upload.addEventListener('progress', function(e) 

               {

               if (e.lengthComputable)

               {

               var percent = "上传进度:" + e.loaded/e.total*100 + "%";

               $('#progressId').text(percent);

               }

               }, 

               false);

            }

            return myXhr; //xhr对象返回给jQuery使用

        },

});

        });

        }

</script>

</head>

<body>

<form id="myFormId" onsubmit="return false"<!--onsubmit阻止点击按钮后浏览器自动提交表单-->

文件1:<input type="file" name="file1"><br>

文本:<input type="text" name="text1"><br>

<button id="uploadBtnId">点击上传</button>

</form>

<p id="progressId"></p>

<p id="resultId"></p>

</body>

</html>

后端代码

1

2

3

4

5

6

7

8

<?php

//演示用,仅显示下上传上来的数据

echo "_FILES<br>";

echo var_dump($_FILES);

echo "<br><br>_POST<br>";

echo var_dump($_POST);

echo "<br>";

?>

猜你喜欢

转载自blog.csdn.net/winkexin/article/details/131017204
今日推荐