亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JS+HTML如何實現自定義上傳圖片按鈕并顯示圖片功能

發布時間:2021-05-27 14:18:02 來源:億速云 閱讀:424 作者:小新 欄目:web開發

這篇文章主要介紹了JS+HTML如何實現自定義上傳圖片按鈕并顯示圖片功能,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

在web開發中,上傳文件功能通過type為file的input標簽即可實現。但input的顯示效果僅為一個按鈕,且不能修改UI。如果要實現自定義上傳按鈕,一般需要設置input為不可見,然后將input與自定義界面放在同一個div中,并將input鋪在界面上方:

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>圖片上傳</title>
</head>
<body>
  <!-- 要將父布局的position設置為relative,父布局將無法包裹input -->
  <div >
    <!--設置input的position為absolute,使其不按文檔流排版,并設置其包裹整個布局 -->
    <!-- 設置opactity為0,使input變透明 -->
    <!-- 只接受jpg,gif和png格式 -->
    <input id="upload-input"  type="file" accept="image/gif, image/jpg, image/png" />
    <!-- 自定義按鈕效果 -->
    <div >
      <span >上傳文件:</span>
      <img id="upload" src="./upload.png"  />
    </div>
  </div>
</body>
</html>

效果如下:

JS+HTML如何實現自定義上傳圖片按鈕并顯示圖片功能
圖片上傳

這樣,自定義按鈕效果就完成了。但是,這樣還不能把圖片顯示出來。要實現顯示上傳圖片功能,可以通過以下方法實現:

  1. FileReader將文件轉Base64顯示。FileReader能夠異步讀取文件,并將文件轉化為可讀取的編碼。我們可以通過input獲取上傳圖片的file實例。我們可以通過FileReader將file實例轉化為Base64,然后通過img標簽加載圖片的Base64編碼。

<script type="text/javascript">
  function showImg(input) {
    var file = input.files[0];
    var reader = new FileReader()
    // 圖片讀取成功回調函數
    reader.onload = function(e) {
      document.getElementById('upload').src=e.target.result
    }
    reader.readAsDataURL(file)
  }
</script>
  1. 通過window.URL.createObjectURL創建url。通過該方法可以為file實例創建一個臨時的url,img可以通過該url將圖片加載出來。由于是臨時的url,因此同一個file實例,每次創建的url都會不一樣:

  function showImg(input) {
    var file = input.files[0];
    var url = window.URL.createObjectURL(file)
    document.getElemtById('upload').src=url
  }

使用上述方法中的其中一種,并將showImg方法掛在input的onchange屬性上,就能夠顯示圖片了:

<input id="upload-input"  
type="file" accept="image/gif, image/jpg, image/png" 
onchange="showImg(this)"/>

顯示效果如下:

JS+HTML如何實現自定義上傳圖片按鈕并顯示圖片功能
顯示上傳的圖片

上述代碼中,點擊input標簽時,一次性只能選擇一張圖片,如果要選擇多張圖片,則要給input添加multiple屬性:

<input id="upload-input" 
 type="file" 
accept="image/gif, image/jpg, image/png" multiple onchange="showImg(this)"/>

然后通過多個img顯示files里面的圖片即可,代碼如下:

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>圖片上傳</title>
</head>
<body>
  <!-- 要將父布局的position設置為relative,父布局將無法包裹input -->
  <div >
    <!--設置input的position為absolute,使其不按文檔流排版,并設置其包裹整個布局 -->
    <!-- 設置opactity為0,使input變透明 -->
    <!-- 只接受jpg,gif和png格式 -->
    <input id="upload-input"  type="file" accept="image/gif, image/jpg, image/png" onchange="showImg(this)" multiple />
    <!-- 自定義按鈕效果 -->
    <div >
      <span >上傳文件:</span>
      <img id="upload" src="./upload.png"  />
    </div>
  </div>
  <div id="imgContainer" ></div>
</body>
<script type="text/javascript">
  function showImg(obj) {
    var files = obj.files
    // document.getElementById("imgContainer").innerHTML = getImgsByUrl(files)
    getImgsByFileReader(document.getElementById("imgContainer"), files)
  }
  // 使用window.URL.createObjectURL(file)讀取file實例并顯示圖片
  function getImgsByUrl(files) {
    var elements = ''
    for (var i = 0; i < files.length; i++) {
      var url = window.URL.createObjectURL(files[i])
      elements += "<img src='"+ url + "' style='width: 40px; height: 40px; vertical-align: middle; margin-right: 5px;' />"
    }
    return elements
  }
  // 使用FileReader讀取file實例并顯示圖片
  function getImgsByFileReader(el, files) {
    for (var i = 0; i < files.length; i++) {
      let img = document.createElement('img')
      img.setAttribute('style', 'width: 40px; height: 40px; vertical-align: middle; margin-right: 5px;')
      el.appendChild(img)
      var reader = new FileReader()
      reader.onload = function(e) {
        img.src = e.target.result
      }
      reader.readAsDataURL(files[i])
    }
  }
</script>
</html>

最終顯示效果如圖:

JS+HTML如何實現自定義上傳圖片按鈕并顯示圖片功能

感謝你能夠認真閱讀完這篇文章,希望小編分享的“JS+HTML如何實現自定義上傳圖片按鈕并顯示圖片功能”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

南阳市| 武川县| 科技| 湖州市| 公主岭市| 天峨县| 特克斯县| 黄山市| 湖北省| 炉霍县| 无锡市| 肇庆市| 册亨县| 和平区| 丹阳市| 广饶县| 高要市| 宜君县| 德州市| 井研县| 甘洛县| 山阳县| 南和县| 云霄县| 西乌珠穆沁旗| 新巴尔虎左旗| 巴楚县| 嫩江县| 鸡东县| 平泉县| 英德市| 仁布县| 买车| 称多县| 资兴市| 宁都县| 阿拉善盟| 普洱| 五大连池市| 东丽区| 黑河市|