欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

js實現(xiàn)頭像上傳并且可預覽提交

 更新時間:2020年12月25日 11:26:49   作者:harold1024  
這篇文章主要介紹了js如何實現(xiàn)頭像上傳并且可預覽提交,幫助大家更好的理解和使用js,感興趣的朋友可以了解下

在用戶注冊賬號或者修改資料的時候會需要用戶在本地選擇一張圖片作為頭像,并同時預覽,

常見的思路有兩種:一是將圖片上傳至服務器的臨時文件夾中,并返回該圖片的url,然后渲染在html頁面;另一種思路是,直接在本地內(nèi)存中預覽圖片,用戶確認提交后再上傳至服務器保存。

這兩種方法各有利弊,方法一很明顯,浪費流量和服務器資源;方法二則加重了瀏覽器的負擔,并且對瀏覽器的兼容性要求更高。

這里介紹的是直接在本地內(nèi)存中預覽圖片,用戶確認提交后再上傳至服務器保存這種方法

html

<div class="reHead">
   <P class="content-format">頭像支持jpg、png、jpeg格式,文件大小最大不能超過1M</P>
   <div class="content">
     <form method="post" enctype="multipart/form-data" id="file_upload" class="headForm">
       <div id="test-image-preview" class="iconfont icon-bianjitouxiang">
         <input type="file" name="test" id="test-image-file" class="fileHead" accept="image/gif, image/jpeg, image/png, image/jpg" multiple="multiple">
       </div>
       <div class="headMain">
         <span class="file">上傳文件</span>
         <p id="test-file-info" class="fileName"></p>
       </div>
     </form>
   </div>
   <div class="but">
     <button class=" orangeHead" id="upImgSub"><a href="" title=" rel="external nofollow" 編輯資料" target="_blank">保存</a></button>
   </div>
 </div>

js 上傳頭像

<script type="text/javascript" src="./jquery.min.js"></script>
  <script>
    var fileInput = document.getElementById('test-image-file'),
      info = document.getElementById('test-file-info'),
      preview = document.getElementById('test-image-preview');
      dataBase64 = '',
    // preview.style.backgroundImage = 'url(../../img/portrait.png)';  //默認顯示的圖片

    // 監(jiān)聽change事件:
    fileInput.addEventListener('change', upImg);

    // 頭像上傳邏輯函數(shù)
    function upImg(){
      preview.style.backgroundImage = '';    // 清除背景圖片
      if (!fileInput.value) {   // 檢查文件是否選擇:
        $('#test-image-preview').addClass('icon-bianjitouxiang');
        info.innerHTML = '沒有選擇文件';
      }else{
        $('#test-image-preview').removeClass('icon-bianjitouxiang');
        info.innerHTML = '';
      }
      
      var file = fileInput.files[0];  // 獲取File引用
      var size = file.size;
      if (size >= 1 * 1024 * 1024) {   //判斷文件大小
        info.innerHTML = '文件大于1兆不行!';
        preview.style.backgroundImage = '';
        $('#test-image-preview').addClass('icon-bianjitouxiang');
        return false;
      }
      
      if (file.type !== 'image/jpeg' && file.type !== 'image/png' && file.type !== 'image/gif') {  // 獲取File信息:
        info.innerHTML = '不是有效的圖片文件!';
        preview.style.backgroundImage = '';
        $('#test-image-preview').addClass('icon-bianjitouxiang');
        return;
      }

      // 讀取文件:
      var reader = new FileReader();
      reader.onload = function (e) {
        dataBase64 = e.target.result;   // 'data:image/jpeg;base64,/9j/4AAQSk...(base64編碼)...}'    
        preview.style.backgroundImage = 'url(' + dataBase64 + ') ';
        preview.style.backgroundRepeat = 'no-repeat';
        preview.style.backgroundSize = ' 100% 100%';
      };
      // 以DataURL的形式讀取文件:
      reader.readAsDataURL(file);
      // console.log(file);
    }

js 提交頭像到服務器

$("#upImgSub").click(function () {
      $.ajax({
        type:'post',
        data:{'newHead':dataBase64},
        async:false,   // 當async屬性的值為false時是同步的,Ajax請求將整個瀏覽器鎖死,只有ajax請求返回結果后,才執(zhí)行ajax后面的alert語句。  (雖然可行,但是不推薦)              // 當async屬性的值為true時是異步的,即不會等待ajax請求返回的結果,會直接執(zhí)行ajax后面的alert語句。    (后期介紹異步請求解決回地獄)
        dataType:'json',
        url:'/index/img',
        success:function (res) {  // 返回成功
          if(res.code === 200){
            alert(msg)     // 上傳成功
          }else{
            alert(msg)     // 上傳失敗
          }
        },
        error:function () {
          alert("接口錯誤");    // 返回失敗
        }
      })
    });

當async屬性的值為false時是同步的,Ajax請求將整個瀏覽器鎖死,只有ajax請求返回結果后,才執(zhí)行ajax后面的alert語句。 (雖然可行,但是不推薦) 當async屬性的值為true時是異步的,即不會等待ajax請求返回的結果,會直接執(zhí)行ajax后面的alert語句。 (后期介紹異步請求解決回地獄)

css

body{
  font-size: 12px;
}
.reHead{
  margin: 15px 4%; 
}
.headForm{
  text-align: center;
  padding: 40px 0 70px 0;
}
#test-image-preview {
  position: relative;
  display: inline-block;
  width: 100px;
  height: 100px;
  border-radius: 50px;
  background: #F5F5F5;
  color: #fff;
  font-size: 60px;
  text-align: center;
  line-height: 100px;
  background-size: contain;
  background-repeat: no-repeat;
  background-position: center center;
  margin-bottom: 26px;
}
.fileHead{
  position: absolute;
  width: 100px;
  height: 100px;
  right: 0;
  top: 0;
  opacity: 0;
}
.content-format {
  font-size: 12px;
  font-weight: 400;
  color: rgba(153, 153, 153, 1);
}
.headMain{
  height: 40px;
}
.file {
  position: relative;
  background: #fff;
  color: #F39800;
  font-weight:800;
}
.file input {
  position: absolute;
  font-size: 12px;
  right: 0;
  top: 0;
  opacity: 0;
}
.fileName {
  line-height: 28px;
  font-size: 12px;
  font-weight: 400;
  color: rgba(51, 51, 51, 1);
}
.but{
  text-align: center;
}
.orangeHead{
  width: 40%;
  height: 40px;
  background: #f60;
  border: none;
}
.orangeHead a{
  color: #fff;
}

以上就是js實現(xiàn)頭像上傳并且可預覽提交的詳細內(nèi)容,更多關于js 頭像上傳的資料請關注腳本之家其它相關文章!

相關文章

  • 如何通過Proxy實現(xiàn)JSBridge模塊化封裝

    如何通過Proxy實現(xiàn)JSBridge模塊化封裝

    這篇文章主要介紹了如何通過Proxy實現(xiàn)JSBridge模塊化封裝,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-10-10
  • 利用ES6的Promise.all實現(xiàn)至少請求多長時間的實例

    利用ES6的Promise.all實現(xiàn)至少請求多長時間的實例

    下面小編就為大家?guī)硪黄肊S6的Promise.all實現(xiàn)至少請求多長時間的實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • for?of?和?for?in?的區(qū)別介紹

    for?of?和?for?in?的區(qū)別介紹

    這篇文章主要介紹了for?of?和?for?in?的區(qū)別,for?of?和?for?in都是用來遍歷的屬性,本文重點介紹下for?of?和?for?in?的區(qū)別,需要的朋友可以參考下
    2022-12-12
  • JS實現(xiàn)slide文字框縮放伸展效果代碼

    JS實現(xiàn)slide文字框縮放伸展效果代碼

    這篇文章主要介紹了JS實現(xiàn)slide文字框縮放伸展效果代碼,涉及JavaScript響應鼠標事件動態(tài)操作頁面元素屬性的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11
  • JavaScript獲取當前url根目錄(路徑)

    JavaScript獲取當前url根目錄(路徑)

    本文主要介紹JavaScript獲取當前url根目錄的方法,比較實用,需要的朋友可以參考一下。
    2016-06-06
  • 微信小程序獲取當前位置的詳細步驟

    微信小程序獲取當前位置的詳細步驟

    微信小程序開發(fā)中選擇地理位置就需要通過官方文檔API去判斷用戶是否授權地理位置,用戶開啟授權后可直接獲取地理位置,下面這篇文章主要給大家介紹了關于微信小程序獲取當前位置的詳細步驟,需要的朋友可以參考下
    2022-12-12
  • ES6的Fetch異步請求的實現(xiàn)方法

    ES6的Fetch異步請求的實現(xiàn)方法

    這篇文章主要介紹了ES6的Fetch異步請求的實現(xiàn)方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • bootstrap table實現(xiàn)點擊翻頁功能 可記錄上下頁選中的行

    bootstrap table實現(xiàn)點擊翻頁功能 可記錄上下頁選中的行

    這篇文章主要介紹了bootstrap table實現(xiàn)點擊翻頁功能,可記錄上下頁選中的行,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • js簡單的表拖拽

    js簡單的表拖拽

    用js實現(xiàn)表格的拖拽效果代碼
    2008-05-05
  • js數(shù)字滑動時鐘的簡單實現(xiàn)(示例講解)

    js數(shù)字滑動時鐘的簡單實現(xiàn)(示例講解)

    下面小編就為大家?guī)硪黄猨s數(shù)字滑動時鐘的簡單實現(xiàn)(示例講解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08

最新評論