国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

擴(kuò)展element-ui el-upload組件,實(shí)現(xiàn)復(fù)制粘貼上傳圖片文件,帶圖片預(yù)覽功能

這篇具有很好參考價(jià)值的文章主要介紹了擴(kuò)展element-ui el-upload組件,實(shí)現(xiàn)復(fù)制粘貼上傳圖片文件,帶圖片預(yù)覽功能。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

擴(kuò)展element-ui的el-upload上傳組件,實(shí)現(xiàn)復(fù)制粘貼上傳圖片文件,帶圖片預(yù)覽功能

需求說(shuō)明

原業(yè)務(wù)系統(tǒng)中的圖片上傳功能經(jīng)常使用,普通的添加按鈕只能通過(guò)系統(tǒng)對(duì)話框打開(kāi)本地計(jì)算機(jī)目錄,
在本地文件夾中選擇要上傳的圖片。
導(dǎo)致在使用業(yè)務(wù)系統(tǒng)過(guò)程中,截圖后需要先將圖片存儲(chǔ)到本地計(jì)算機(jī)目錄,再點(diǎn)擊頁(yè)面圖片上傳。
在重復(fù)使用該功能時(shí)會(huì)浪費(fèi)過(guò)多的時(shí)間在圖片保存,上傳。
為了解決業(yè)務(wù)該問(wèn)題,亟需對(duì)該圖片上傳功能進(jìn)行改造,避免業(yè)務(wù)人員過(guò)多的時(shí)間浪費(fèi)在圖片上傳操作。

擴(kuò)展element-ui el-upload組件,實(shí)現(xiàn)復(fù)制粘貼上傳圖片文件,帶圖片預(yù)覽功能

改造路線

為了簡(jiǎn)化圖片上傳步驟,增加直接粘貼 “粘貼板”中的圖片文件,做到圖片不落地,減少圖片上傳所需要的操作步驟。

改造前分析

通過(guò)對(duì)前端框架的分析,當(dāng)前圖片上傳功能,采用 element-ui 組件,版本為 2.15.6
實(shí)現(xiàn)粘貼圖片,需要監(jiān)聽(tīng)ctrl + v 命令

開(kāi)始改造

控件改造

在窗口的 el-form 控件參數(shù)中添加 @paste.native 事件,事件綁定方法名 handlePaste
也可以在其他控件中添加事件監(jiān)聽(tīng),看個(gè)人需求。

注意: 監(jiān)聽(tīng)粘貼事件時(shí),需要當(dāng)前頁(yè)面先獲取焦點(diǎn),否則無(wú)法正常監(jiān)聽(tīng), 可以在頁(yè)面加載后調(diào)用 focus() 獲取焦點(diǎn)

粘貼功能Js部分參考資料:https://blog.csdn.net/blue__k/article/details/125296866

<el-form
  ref="xxxx"
  @paste.native="handlePaste"
  :model="form"
  label-position="right"
  label-width="92px"
  class="page-form"
  style="width: 100%;"
>
------------------------ 分割線 ----------------------
// el-upload控件不用做任何修改,此處僅作展示
<el-upload  
  class="el-upload–picture-card"
  action=""
  :limit="12"
  ref="upload"
  list-type="picture-card"
  :on-preview="handlePictureCardPreview4"
  :before-upload="beforeAvatarUpload4"
  :on-remove="handleRemove4"
  :on-change="handleEditChange4"
  :http-request='uploadlinkmanAfter'
  :file-list="fileList"
  accept=".png,.jpg,.bmp,.jpeg"
  :class="{hide:hideUploadEdit4}"
    >
    <i slot="default" class="el-icon-plus"></i>
    <div slot="tip" class="el-upload__tip">
      只能上傳(png,jpg,bmp,jpeg)圖片文件,不超過(guò)10MB,只允許上傳一份文件
    </div>
</el-upload>


Javascript 實(shí)現(xiàn)函數(shù)

/**
 * 監(jiān)聽(tīng)粘貼操作
 */
handlePaste(e) {
  var clipboardData = e.clipboardData; // IE
  if (!clipboardData) {
      //chrome
    clipboardData = e.originalEvent.clipboardData;
  }
  var items='';
  items = (e.clipboardData || window.clipboardData).items;
  let file = null;
  if (!items || items.length === 0) {
    this.$message.error('當(dāng)前瀏覽器不支持粘貼本地圖片,請(qǐng)打開(kāi)圖片復(fù)制后再粘貼!');
    return;
  }
  // 搜索剪切板items
  for (let i = 0; i < items.length; i++) {
    // 限制上傳文件類(lèi)型
    if (items[i].type.indexOf('image') !== -1) {
      file = items[i].getAsFile();
      break;
    }
  }
  // 對(duì)復(fù)制黏貼的類(lèi)型進(jìn)行判斷,若是非文件類(lèi)型,比如復(fù)制黏貼的文字,則不會(huì)調(diào)用上傳文件的函數(shù)
  if(file){
    // 上傳到圖片服務(wù)器
    xxxxx.uploadImage2OSS(file);
  }
},

遇到的問(wèn)題(可以監(jiān)聽(tīng)到粘貼事件,但沒(méi)有生成縮略圖)

在生成預(yù)覽圖的時(shí)候遇到了粘貼后的圖片沒(méi)有生成預(yù)覽圖片,跟蹤到element-ui控件的源碼中
先打開(kāi)開(kāi)發(fā)者工具,發(fā)現(xiàn)正常的預(yù)覽圖片 src 屬性有 blob:http://localhost/xxxxx
由于該圖片的url是本地緩存的圖片文件,所以在upload控件中必然有圖片緩存函數(shù)存在
繼續(xù)跟蹤upload控件有可能創(chuàng)建圖片的源碼,在index.vue文件第165行(僅供當(dāng)前版本,其他版本可能有差異)中發(fā)現(xiàn)這樣一行代碼:file.url = URL.createObjectURL(rawFile);

handleStart(rawFile) {
  rawFile.uid = Date.now() + this.tempIndex++;
  let file = {
    status: 'ready',
    name: rawFile.name,
    size: rawFile.size,
    percentage: 0,
    uid: rawFile.uid,
    raw: rawFile
  };

  if (this.listType === 'picture-card' || this.listType === 'picture') {
    try {
      file.url = URL.createObjectURL(rawFile);
    } catch (err) {
      console.error('[Element Error][Upload]', err);
      return;
    }
  }

  this.uploadFiles.push(file);
  this.onChange(file, this.uploadFiles);
},

修改后的Javascript函數(shù),調(diào)用upload控件中的 handleStart() 函數(shù)

/**
 * 監(jiān)聽(tīng)粘貼操作
 */
handlePaste(e) {
  var clipboardData = e.clipboardData; // IE
  if (!clipboardData) {
      //chrome
    clipboardData = e.originalEvent.clipboardData;
  }
  var items='';
  items = (e.clipboardData || window.clipboardData).items;
  let file = null;
  if (!items || items.length === 0) {
    this.$message.error('當(dāng)前瀏覽器不支持粘貼本地圖片,請(qǐng)打開(kāi)圖片復(fù)制后再粘貼!');
    return;
  }
  // 搜索剪切板items
  for (let i = 0; i < items.length; i++) {
    // 限制上傳文件類(lèi)型
    if (items[i].type.indexOf('image') !== -1) {
      file = items[i].getAsFile();
      break;
    }
  }
  // 對(duì)復(fù)制黏貼的類(lèi)型進(jìn)行判斷,若是非文件類(lèi)型,比如復(fù)制黏貼的文字,則不會(huì)調(diào)用上傳文件的函數(shù)
  if(file){
    // 上傳到圖片服務(wù)器
    xxxxx.uploadImage2OSS(file);
    // 生成預(yù)覽圖
    this.$refs.upload.handleStart(file);
  }
},

最終實(shí)現(xiàn)的效果圖

擴(kuò)展element-ui el-upload組件,實(shí)現(xiàn)復(fù)制粘貼上傳圖片文件,帶圖片預(yù)覽功能文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-400397.html

到了這里,關(guān)于擴(kuò)展element-ui el-upload組件,實(shí)現(xiàn)復(fù)制粘貼上傳圖片文件,帶圖片預(yù)覽功能的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包