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

js實(shí)現(xiàn)多圖和單圖上傳顯示

 更新時(shí)間:2019年12月18日 08:36:17   作者:尹南南  
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)多圖和單圖上傳顯示,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

項(xiàng)目中經(jīng)常會(huì)大量的使用到圖片上傳,之前涉及到的時(shí)候經(jīng)常會(huì)在網(wǎng)上下載一些素材直接拿過來使用,但是隨著項(xiàng)目的增多發(fā)現(xiàn)用的是各式各樣的,導(dǎo)致非?;靵y。所以抽空寫了一個(gè)DEMO來梳理下圖片上傳的流暢以及單圖和多圖上傳需要注意的點(diǎn)。

多圖上傳

多圖上傳,這里僅僅是做了前端的展示效果,實(shí)際項(xiàng)目中,多圖上傳應(yīng)該是每次上傳一張圖片后向后臺(tái)發(fā)送一次請(qǐng)求,后臺(tái)返回img路徑然后進(jìn)行展現(xiàn)。

為什么一定要傳入后臺(tái)在進(jìn)行展現(xiàn)呢?

1.如果直接在前臺(tái)先展現(xiàn)base64圖片路徑,在向后臺(tái)發(fā)送請(qǐng)求。如果接口出現(xiàn)錯(cuò)誤后,會(huì)給用戶產(chǎn)生錯(cuò)覺,以為圖片上傳成功,而這時(shí)后臺(tái)是沒有接收到圖片的;

2.file文件每次發(fā)生變化,會(huì)將之前的files文件給覆蓋掉。如果直接展現(xiàn)不用ajax提交后,最終用form提交只會(huì)提交最后一張。

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <meta http-equiv="X-UA-Compatible" content="ie=edge">
 <title>多圖上傳/單圖上傳</title>
 <style>
  *{
   margin: 0;
   padding: 0;
  }
  .box{
   width: 1000px;
   height: 120px;
   margin: 0 auto;
   border: 1px solid #ddd;
   margin-top: 20px;
   box-sizing: border-box;
   padding: 10px;
  }
  .upload{
   width: 100px;
   height: 100px;
   float: left;
   position: relative;
   overflow: hidden;
  }
  .upload input{
   position: absolute;
   z-index: 1000;
   top:0;
   left:0;
   width: 100%;
   height: 100%;
   opacity: 0;
  }
  .upload a{
   display: block;
   width: 100%;
  }
  .upload img{
   display: block;
   width: 100%;
   height: 100%;
  }
  .imgList{
   float: left;
   overflow: hidden;
  }
  .imgList .item{
   width: 100px;
   height: 100px;
   margin-right: 20px;
   float: left;
   position: relative;
  }
  .imgList .item img{
   display: block;
   width: 100%;
   height: 100%;
  }
  .imgList .item span{
   position: absolute;
   top: 0;right: 0;
   width: 100%;
   background: red;
   color:#fff;
   height: 20px;
   width: 20px;
   text-align: center;
   border-radius: 50%;
   cursor: pointer;
  }
 </style>
</head>
<body>
 <div class="box">
  <!-- 放圖片的位置 -->
  <div class="imgList" id="imgList"></div>
  <!-- 上傳按鈕 -->
  <div class="upload">
   <input type="file" name="file" value="" multiple accept="image/*" onchange="uploadImg(this);">
   <a href="javascript:void(0)" rel="external nofollow" ><img src="z_add.png" alt=""></a>
  </div>
 </div>
 <script>
   function uploadImg(obj){   
    var files = obj.files;//獲取上傳文件后的fileList
    var imgList = [];//聲明空數(shù)組用來接收上傳完成后的圖片
    for(var i = 0; i<files.length;i++){
     var imgUrl = window.URL.createObjectURL(files[i]);//將文件轉(zhuǎn)換成base64 URL格式
     imgList.push(imgUrl);//將url壓入到數(shù)組中 **如果需要圖片統(tǒng)一選擇完畢后,點(diǎn)擊上傳按鈕統(tǒng)一提交,那么直接拿這imgList給后臺(tái)傳遞即可。**
     // 循環(huán)創(chuàng)建img容器用來放置url在頁面上顯示
     var img = document.createElement('img')
     img.setAttribute("src", imgList[i]);
     //刪除按鈕
     var close = document.createElement('span')
     close.innerHTML="x"
     close.className='close'
     close.setAttribute('onclick',"imgRemove(this)")
     //創(chuàng)建放置img的盒子
     var item = document.createElement('div');
     item.className='item';
     item.append(img)
     item.append(close)
     var box = document.getElementById("imgList");
     box.append(item);
     //ajax向后臺(tái)發(fā)送請(qǐng)求
     
    }
   }
   //刪除代碼
   function imgRemove(obj){
    obj.parentNode.remove()
   }
   
 </script>
</body>
</html>

單圖上傳

去掉input中的multiple 屬性就變成了單圖上傳;

<input type="file" name="file" value="" accept="image/*" onchange="uploadImg(this);">

按照上邊的代碼直接就可以實(shí)現(xiàn)單圖上傳和多圖上傳。下邊在說下單圖上傳和多圖上傳提交需要注意的;

1.單圖上傳可以跟隨form表單一起提交,給input一個(gè)name值后臺(tái)就可以提交過去;

2.多圖上傳不可以跟form一起提交,因?yàn)槊看紊蟼骱骹ile只會(huì)保留最新的;可以先通過ajax將圖片提交成功后,在form內(nèi)去循環(huán)創(chuàng)建隱藏的input將后臺(tái)返回的路徑設(shè)置成改input的val值最后跟隨form提交;需要注意隱藏的input的name值寫成[]形式,比如:name=“img[]”。這樣在form提交的時(shí)候后臺(tái)就可以接受到所有的圖片;

以上的代碼,適用于前端點(diǎn)擊file上傳圖片后的顯示。具體與后臺(tái)的一些交互可以根據(jù)實(shí)際項(xiàng)目中的需求進(jìn)行增加!

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • GoJs面板繪圖模板go.Panel使用示例詳解

    GoJs面板繪圖模板go.Panel使用示例詳解

    這篇文章主要為大家介紹了GoJs面板繪圖模板go.Panel使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • javascript cookie的基本操作(添加和刪除)

    javascript cookie的基本操作(添加和刪除)

    這篇文章主要介紹了javascript cookie的基本操作的相關(guān)資料,這里對(duì)Cookie的操作進(jìn)行了詳細(xì)介紹包括獲取,新建,設(shè)置有效期,添加和刪除等,需要的朋友可以參考下
    2017-07-07
  • javascript表達(dá)式和運(yùn)算符詳解

    javascript表達(dá)式和運(yùn)算符詳解

    本文主要對(duì)js表達(dá)式與js運(yùn)算符進(jìn)行詳細(xì)介紹。具有很好的參考價(jià)值。下面跟著小編一起來看下吧
    2017-02-02
  • JS中的事件委托實(shí)例淺析

    JS中的事件委托實(shí)例淺析

    這篇文章主要介紹了JS中的事件委托,結(jié)合實(shí)例形式簡(jiǎn)單分析了javascript事件委托的概念、功能、使用方法及相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2018-03-03
  • JavaScript初學(xué)者容易犯的幾個(gè)錯(cuò)誤

    JavaScript初學(xué)者容易犯的幾個(gè)錯(cuò)誤

    JavaScript 是對(duì)初學(xué)者比較友好的一門編程語言,基本上花個(gè)半小時(shí)看下語法就能寫出能運(yùn)行的代碼。JavaScript 是動(dòng)態(tài)腳本語言,對(duì)數(shù)據(jù)類型沒有太多的限制,寫起來非常靈活。但正因?yàn)槿绱耍鯇W(xué)者如果不深入了解語言本身,往往會(huì)犯一些錯(cuò)誤,從而導(dǎo)致一些很難發(fā)現(xiàn)的 bug。
    2021-05-05
  • 微信小程序(六):列表上拉加載下拉刷新示例

    微信小程序(六):列表上拉加載下拉刷新示例

    本篇文章主要介紹了微信小程序(六):列表上拉加載下拉刷新示例,非常具有實(shí)用價(jià)值,需要的朋友可以參考下。
    2017-01-01
  • js點(diǎn)擊按鈕實(shí)現(xiàn)圖片排序

    js點(diǎn)擊按鈕實(shí)現(xiàn)圖片排序

    這篇文章主要為大家詳細(xì)介紹了js點(diǎn)擊按鈕實(shí)現(xiàn)圖片排序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • 微信小程序?qū)崿F(xiàn)彈出層禁止頁面滾動(dòng)

    微信小程序?qū)崿F(xiàn)彈出層禁止頁面滾動(dòng)

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)彈出層禁止頁面滾動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • javascript天然的迭代器

    javascript天然的迭代器

    有一個(gè)數(shù)n=5,不用for循環(huán),怎么返回[1,2,3,4,5]這樣一個(gè)數(shù)組
    2010-10-10
  • 微信小程序自定義導(dǎo)航教程(兼容各種手機(jī))

    微信小程序自定義導(dǎo)航教程(兼容各種手機(jī))

    這篇文章主要給大家介紹了關(guān)于微信小程序自定義導(dǎo)航的相關(guān)內(nèi)容,文中通過示例代碼介紹的非常詳細(xì),兼容各種手機(jī),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12

最新評(píng)論