第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

【九月打卡】第11天 完成編輯器中的上傳功能

標(biāo)簽:
Vue.js

课程名称web前端架构师

课程章节:第11周 第五章

主讲老师:张轩

课程内容:完成编辑器中的上传功能

将上传组件添加到编辑器中

昨天完成对上传组件文件校验进行了封装,下面将它添加到编辑器中

function befeforeUpload (file: File) {
  const condition = {
    format: ['image/jpg', 'image/jpeg', 'image/png', 'image/gif'],
    size: 10 * 1024 * 1024
  }
  const res = uploadCheck(file, condition)
  if (!res.passed) {
    message.error(res.err)
  }
  return res.passed
}

这里我们对图片格式和大小进行了校验

封装一个组件用来上传图片

<script setup lang="ts">
...
function onUploaded (file: FileItem) {
  emit('uploaded', file.res.data.url as string)
}
</script>
<template>
  <upload-file
    :show-list="false"
    :before-upload="befeforeUpload"
    @uploaded="onUploaded"
  >
    <template #default>
      <a-button>点击上传</a-button>
    </template>
    <template #loading>
      <a-button>点击上传</a-button>
    </template>
    <template #uploaded>
      <a-button>点击上传</a-button>
    </template>
  </upload-file>
</template>

将该组件添加到编辑器上

<script setup lang="ts">
const emit = defineEmits<{(e: 'item-click', item: ComponentData): void}>()

function onUploaded (src: string) {
  const componentData: ComponentData = {
    tag: 'a-image',
    ...ImageDetaultProps,
    width: '200px',
    src
  }
  emit('item-click', componentData)
}
</script>
<template>
  组件列表
  ...
  <style-upload @uploaded="onUploaded" />
</template>

这里暂时先将图片设置为200px,否则图片显示不出来

获取图片的原始宽高

上传图片到编辑器时,我们需要给它设置一个合适的高度

  • 首先获取到图片的原始宽高,宽高都要/2, ,因为我们是在移动端显示
  • 图片宽度大于编辑器宽度时,可以给它设置为编辑器的宽度,即给图片设置个最大宽度
  • 图片宽度小于编辑器宽度时,我们可以设置它为图片的原始高度

获取图片宽高

Image 构造器,带有两个可选的参数,分别表示资源的宽度和高度,创建了一个尚未被插入 DOM 树中的 HTMLImageElement 实例

所以可以通过获取元素的 naturalWidth 和 naturalHeight 来获取到图片的原始宽高

unction getImageDimensions (src: string) {
  return new Promise<{width: number;height: number}>((resolve, reject) => {
    const img = new Image()
    img.src = src
    img.addEventListener('load', () => {
      const { naturalWidth: width, naturalHeight: height } = img
      resolve({
        width: width / 2,
        height: height / 2
      })
    })
  })
}

将它添加到编辑器上。

我们的高度可以不用设置,可以让它自动撑开,这样更好控制,我们给图片设置最大宽度时,也不需要任何处理

async function onUploaded (src: string) {
 const { width } = await getImageDimensions(src)

 const componentData: ComponentData = {
   tag: 'a-image',
   ...ImageDetaultProps,
   width: width/2 + 'px',
   src
 }

 emit('item-click', componentData)
}

这样上传图片就完成了

这里还需要注意的是由于 andtv 的image 组件无法设置最大宽度,所以还需要自己写一个图片组件,这个组件实现也非常简单

图片描述

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消