成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

jquery+ajax實現(xiàn)上傳圖片并顯示上傳進度功能【附php后臺接收】

本文實例講述了jquery+ajax實現(xiàn)上傳圖片并顯示上傳進度功能。分享給大家供大家參考,具體如下:

創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站建設(shè)、成都做網(wǎng)站、加格達奇網(wǎng)絡(luò)推廣、微信小程序開發(fā)、加格達奇網(wǎng)絡(luò)營銷、加格達奇企業(yè)策劃、加格達奇品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供加格達奇建站搭建服務(wù),24小時服務(wù)熱線:13518219792,官方網(wǎng)址:jinyejixie.com

jquery上傳文件用的formdata,上傳進度條需要添加xhr的onprogress

html代碼如下:

<!DOCTYPE html>
<html lang="zh-CN">
<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, user-scalable=no">
  <title>Ding Jianlong Html</title>
  <link  rel="external nofollow" rel="stylesheet">
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/layer/2.3/layer.js"></script>
</head>
<body>
 <!-- 外層div 進度條的整體視覺和位置設(shè)置 -->
  <div >
  <!-- 內(nèi)層div 逐漸遞增的進度條 -->
    <div id="jdt" ></div>
  </div>
  <p>總大小<span id="total"></span>;已上傳<span id="loaded"></span>;</p><br>
  <form id="mainForm">
    選擇文件:<input type="file" name="file">
    <input type="button" value="上傳" onclick="upload()">
  </form>
<script>
  var uploading = false;
 function upload(){
    //首先封裝一個方法 傳入一個監(jiān)聽函數(shù) 返回一個綁定了監(jiān)聽函數(shù)的XMLHttpRequest對象
    var xhrOnProgress=function(fun) {
      xhrOnProgress.onprogress = fun; //綁定監(jiān)聽
      //使用閉包實現(xiàn)監(jiān)聽綁
      return function() {
        //通過$.ajaxSettings.xhr();獲得XMLHttpRequest對象
        var xhr = $.ajaxSettings.xhr();
        //判斷監(jiān)聽函數(shù)是否為函數(shù)
        if (typeof xhrOnProgress.onprogress !== 'function')
          return xhr;
        //如果有監(jiān)聽函數(shù)并且xhr對象支持綁定時就把監(jiān)聽函數(shù)綁定上去
        if (xhrOnProgress.onprogress && xhr.upload) {
          xhr.upload.onprogress = xhrOnProgress.onprogress;
        }
        return xhr;
      }
    }
    var data = new FormData($('#mainForm')[0]); //要加【0】
    console.log(data);
    if(uploading){
      layer.alert("文件正在上傳中,請稍候");
      return false;
    }
    $.ajax({
      type: 'POST',
      url: 'upload_file.php',  //當(dāng)前路徑
      data: data,
      dataType: 'json',
      processData: false,  //序列化,no
      contentType: false,  //不設(shè)置內(nèi)容類型
      beforeSend: function(){
        uploading = true;
      },
      //進度條要調(diào)用原生xhr
      xhr:xhrOnProgress(function(evt){
        var percent = Math.floor(evt.loaded / evt.total*100);//計算百分比
        console.log(percent);
        // 設(shè)置進度條樣式
        $('#jdt').css('width',percent * 3 + 'px');
        $('#jdt').css('background','skyblue');
        //顯示進度百分比
        $('#jdt').text(percent+'%');
        $('#loaded').text(evt.loaded/1024 + 'K');
        $('#total').text(evt.total/1024 + 'K');
      }),
      success: function (data) {
        if (data.code == 200) {
          layer.msg(data.message, {icon: 1, time: 1000});
          //成功后關(guān)閉修改頁
          setTimeout(function(){
            var index = parent.layer.getFrameIndex(window.name); //先得到當(dāng)前iframe的索引
            parent.layer.close(index);  //在執(zhí)行關(guān)閉
          } ,2000);
          //還有刷新下iframe的界面
          parent.location.reload();
        } else {
          layer.msg(data.message, {icon: 2, time: 3000});
        }
        uploading = false;
      },
      error: function (data) {
        alert('服務(wù)異常,請稍后重試');
        console.log(data);
      }
    });
  }
</script>
</body>
</html>

php代碼如下:

<?php
header('content-type:text/html;charset=utf-8');
if ($_FILES["file"]["error"] > 0)
{
 echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
}
else
{
 // 文件中文轉(zhuǎn)碼
 //iconv('utf-8', 'gbk', $_FILES["file"]["name"]);
  //取出后綴名
  $ext = strrchr($_FILES["file"]["name"],'.');
  move_uploaded_file($_FILES["file"]["tmp_name"],
   "upload/" . uniqid() . $ext);
  $arr['code'] = 666;
  $arr['message'] = "已經(jīng)保存到: " . "upload/" . uniqid() . $ext;
  echo json_encode($arr);die;
}

參考資料: https://www.jb51.net/article/94853.htm

更多關(guān)于jQuery相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《jquery中Ajax用法總結(jié)》、《jQuery擴展技巧總結(jié)》、《jQuery常用插件及用法總結(jié)》、《jQuery常見經(jīng)典特效匯總》及《jquery選擇器用法總結(jié)》

希望本文所述對大家jQuery程序設(shè)計有所幫助。

分享文章:jquery+ajax實現(xiàn)上傳圖片并顯示上傳進度功能【附php后臺接收】
本文路徑:http://jinyejixie.com/article34/pocipe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站App開發(fā)、云服務(wù)器微信小程序、自適應(yīng)網(wǎng)站網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營
温泉县| 夏河县| 新竹市| 财经| 广宁县| 克什克腾旗| 建德市| 麟游县| 定南县| 宁强县| 桃园县| 丹东市| 颍上县| 昌黎县| 历史| 洛阳市| 资中县| 资源县| 乐平市| 青海省| 竹北市| 丹棱县| 来凤县| 巨鹿县| 平南县| 普兰店市| 杭锦后旗| 腾冲县| 阿坝| 新郑市| 楚雄市| 西乌珠穆沁旗| 根河市| 余江县| 榕江县| 绥阳县| 景洪市| 海兴县| 满城县| 定西市| 拉萨市|