整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          鏈路追蹤詳解(五):鏈路傳播 Header 詳解

          路追蹤作為分布式系統中不可或缺的一部分,可以幫助開發和運維人員了解請求在系統中的流轉鏈路,快速定位問題和識別性能瓶頸。而鏈路傳播 Header 是實現跨服務調用鏈跟蹤的關鍵機制,通過鏈路傳播 Header,使得跟蹤信息在不同服務間的透明傳遞,從而構建出完整的請求鏈路。

          文章持續更新中,微信搜索【路多辛】閱讀更多優質文章

          件拖拽上傳

          使用HTML5的文件API, 可以將操作系統中的文件拖放到瀏覽器的指定區域, 實現文件上傳到服務器。本文將結合實例講解HTML5+jQuery+PHP實現拖拽上傳圖片的過程, 來看下HTML5的魅力吧。

          HTML

          我們在頁面中放置一個拖拽區域#drop_area, 即接收拖拽的區域, #preview用來預覽拖拽上傳的圖片信息。

          <div id="drop_area">將圖片拖拽到此區域</div>
          <div id="preview"></div>

          Javascript

          要想實現拖拽, 頁面需要阻止瀏覽器默認行為, 即四個事件(拖離、拖后放、拖進、拖來拖去), 因為我們要阻止瀏覽器默認將圖片打開的行為, 這里我們使用jQuery來完成。

          $(function(){
          //阻止瀏覽器默認行。
          $(document).on({
              dragleave:function(e){ //拖離
              e.preventDefault();
          },
          drop:function(e){ //拖后放
              e.preventDefault();
          },
          dragenter:function(e){ //拖進
              e.preventDefault();
          },
          dragover:function(e){ //拖來拖去
              e.preventDefault();
          }
          });
          ...
          });

          接下來我們來了解下文件API。HTML5的文件API有一個FileList接口, 它可以通過e.dataTransfer.files拖拽事件傳遞的文件信息, 獲取本地文件列表信息

          var fileList = e.dataTransfer.files;

          在本例中, 我們用javascript來偵聽drop事件, 首先要判斷拖入的文件是否符合要求, 包括圖片類型、大小等, 然后獲取本地圖片信息, 實現預覽, 最后上傳。

          $(function(){
          /// ...接上部分
          var box = document.getElementById('drop_area'); //拖拽區域
          box.addEventListener("drop",function(e){
          e.preventDefault(); //取消默認瀏覽器拖拽效果
          var fileList = e.dataTransfer.files; //獲取文件對象
          //檢測是否是拖拽文件到頁面的操作
          if(fileList.length == 0){
              return false;
          }
          //檢測文件是不是圖片
          if(fileList[0].type.indexOf('image') === -1){
          alert("您拖的不是圖片!");
          return false;
          }
          
          //拖拉圖片到瀏覽器,可以實現預覽功能
          var img = window.URL.createObjectURL(fileList[0]);
          var filename = fileList[0].name; //圖片名稱
          var filesize = Math.floor((fileList[0].size)/1024);
          if(filesize>500){
          alert("上傳大小不能超過500K.");
          return false;
          }
          var str = "<img src='"+img+"'><p>圖片名稱:"+filename+"</p><p>大小:"+filesize+"KB</p>";
          $("#preview").html(str);
          
          //上傳
          xhr = new XMLHttpRequest();
          xhr.open("post", "upload.php", true);
          xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
          
          var fd = new FormData();
          fd.append('mypic', fileList[0]);
          
          xhr.send(fd);
          },false);
          });

          我們用FormData模擬表單數據, 直接將數據append到formdata對象中, 實現了ajax上傳。

          PHP

          upload.php用于接收上傳的文件信息, 完成上傳, 實現代碼如下:

          <?php
          $mypic = $_FILES["mypic"];
          if(!empty($mypic)){
          $picname = $_FILES['mypic']['name'];
          $picsize = $_FILES['mypic']['size'];
          if ($picsize > 512000) {
          echo '圖片大小不能超過500k';
          exit;
          }
          $type = strstr($picname, '.');
          if ($type != ".gif" && $type != ".jpg") {
          echo '圖片格式不對!';
          exit;
          }
          $pics = 'helloweba' . $type;
          //上傳路徑
          $pic_path = "pics/". $pics;
          move_uploaded_file($mypic["tmp_name"],$pic_path);
          }
          ?>

          下邊這幾句可以沒有

          <meta charset="utf-8">
          <form action="" method="post" enctype="multipart/form-data">
          <input type="file" name="mypic">
          <input type="submit" value="上傳">
          </form>

          最后總結下HTML5實現拖拽上傳的技術要點:

          1、監聽拖拽:監聽頁面元素的拖拽事件, 包括:dragenter、dragover、dragleave和drop, 一定要將dragover的默認事件取消掉, 不然無法觸發drop事件。如需拖拽頁面里的元素, 需要給其添加屬性draggable=”true”;

          2、獲取拖拽文件:在drop事件觸發后通過e.dataTransfer.files獲取拖拽文件列表, .length屬性獲取文件數量, .type屬性獲取文件類型。

          3、讀取圖片數據并添加預覽圖。

          4、發送圖片數據:使用FormData模擬表單數據AJAX提交文件流。

          TTP(HyperTextTransferProtocol)即超文本傳輸協議,目前網頁傳輸的的通用協議。HTTP協議采用了請求/響應模型,瀏覽器或其他客戶端發出請求,服務器給與響應。就整個網絡資源傳輸而言,包括message-header和message-body兩部分。首先傳遞message- header,即http header消息 。http header 消息通常被分為4個部分:general header, request header, response header, entity header。但是這種分法就理解而言,感覺界限不太明確。根據維基百科對http header內容的組織形式,大體分為Request和Response兩部分。



          Requests部分


          接上面:

          Responses 部分


          接上面



          原文地址:https://kb.cnblogs.com/page/92320/


          主站蜘蛛池模板: 久久99国产精品一区二区| 中文字幕无码一区二区免费 | 中文字幕在线观看一区二区三区| 亚洲丰满熟女一区二区v| 香蕉久久一区二区不卡无毒影院| 免费观看日本污污ww网站一区| 国产高清一区二区三区| 国精产品一区一区三区| 一区二区三区免费视频观看| 日韩人妻精品一区二区三区视频 | 精品人妻AV一区二区三区| 一本大道东京热无码一区| 精品乱子伦一区二区三区高清免费播放| 日韩一区二区三区精品| 亚洲一区二区三区成人网站| 精品成人一区二区三区四区| 91一区二区在线观看精品| 精品无码一区二区三区爱欲 | 午夜DV内射一区二区| 精品久久国产一区二区三区香蕉| 三上悠亚国产精品一区| 亚洲一区精品伊人久久伊人| 任你躁国产自任一区二区三区| 99精品久久精品一区二区| 精品视频一区二区三区在线观看 | 国产一区二区三区在线观看精品| 免费一区二区三区四区五区| 一区二区三区精品高清视频免费在线播放 | 亚洲日本一区二区三区在线| 国产精华液一区二区区别大吗| 无码人妻精品一区二区| 制服丝袜一区二区三区| 亚洲av永久无码一区二区三区| 极品少妇伦理一区二区| 精品一区二区三区无码免费视频| 国产激情一区二区三区小说| V一区无码内射国产| 伦理一区二区三区| 在线观看中文字幕一区| 亚洲av无码一区二区三区乱子伦| 糖心vlog精品一区二区三区|