vue3+element-push 实现input框粘贴图片或文本,图片上传。

vue3+element-push 实现input框粘贴图片或文本,图片上传。

复制代码
<el-input
          style="height: 100px; width: 100%"
          @paste.capture.prevent="pasting"
          v-model="textMsg"
          placeholder="请输入"
        />
        // 展示上传的列表--可不要
       <div
        style="margin-bottom: 10px; line-height: 20px"
        v-show="filesList"
        v-for="(item, index) in filesList"
        :key="index"
      >
        <div class="zi">
        <img
            :src="item.filePath"
            class="record-img"
            v-if="
              item.fileType === 'png' ||
              item.fileType === 'jpg' ||
              item.fileType === 'jpeg' ||
              item.fileType === 'ico' ||
              item.fileType === 'bmp' ||
              item.fileType === 'gif'
            "
          />
          <img
            src="/src/assets/imgs/fileImg/docx.png"
            class="record-img"
            v-else-if="item.fileType === 'doc' || item.fileType === 'docx'"
          />
          <img
            src="/src/assets/imgs/fileImg/xlsx.png"
            class="record-img"
            v-else-if="item.fileType === 'xls' || item.fileType === 'xlsx'"
          />
          <img
            src="/src/assets/imgs/fileImg/zip.png"
            class="record-img"
            v-else-if="item.fileType === 'zip'"
          />
          <img
            src="/src/assets/imgs/fileImg/rar.png"
            class="record-img"
            v-else-if="item.fileType === 'rar'"
          />
          <img
            src="/src/assets/imgs/fileImg/ppt.png"
            class="record-img"
            v-else-if="item.fileType === 'ppt' || item.fileType === 'pptx'"
          />
          <img
            src="/src/assets/imgs/fileImg/pdf.png"
            class="record-img"
            v-else-if="item.fileType === 'pdf'"
          />
          <img
            src="/src/assets/imgs/fileImg/txt.png"
            class="record-img"
            v-else-if="item.fileType === 'txt'"
          />
          <img
            src="/src/assets/imgs/fileImg/html.png"
            class="record-img"
            v-else-if="item.fileType === 'html'"
          />
          <img src="/src/assets/imgs/fileImg/file.png" class="record-img" v-else />
          <div style="folat: left; margin-left: 40px">
            <el-link
              :href="item.filePath"
              :underline="false"
              download
              target="_blank"
              type="primary"
            >
              {{ item.fileName }}
            </el-link>
          </div>
          <el-icon
            style="position: absolute; right: 20px; top: 7px; color: red"
            size="16"
            @click="deleteFile(index)"
            ><Delete
          /></el-icon>
        </div>
      </div> 
···
···
...
// js部分截图 /
const textMsg = ref('')
const pasting = async (event) => {
  let txt = event.clipboardData.getData('Text')
  if (typeof txt == 'string') {
    textMsg.value += txt
  }
  let cutFile = null
  const items = (event.clipboardData || window.clipboardData).items
  if (items.length) {
    for (let i = 0; i < items.length; i++) {
      if (items[i].type.indexOf('image') !== -1) {
        cutFile = items[i].getAsFile()
        message.success('截图上传中请稍等。。。')
        await FileApi.updateFile({ file: cutFile }).then((res) => {
          filesList.value.push({
            filePath: res.data,
            fileType: cutFile.name.split('.')[1],
            fileName: cutFile.name
          })
        })
        break
      }
    }
  }
}
···
相关推荐
jin12332215 小时前
React Native鸿蒙跨平台剧本杀组队消息与快捷入口组件,包含消息列表展示、快捷入口管理、快捷操作触发和消息详情预览四大核心功能
javascript·react native·react.js·ecmascript·harmonyos
烬头882116 小时前
React Native鸿蒙跨平台实现二维码联系人APP(QRCodeContactApp)
javascript·react native·react.js·ecmascript·harmonyos
pas13616 小时前
40-mini-vue 实现三种联合类型
前端·javascript·vue.js
摇滚侠16 小时前
2 小时快速入门 ES6 基础视频教程
前端·ecmascript·es6
2601_9498333916 小时前
flutter_for_openharmony口腔护理app实战+预约管理实现
android·javascript·flutter
珑墨17 小时前
【Turbo】使用介绍
前端
军军君0118 小时前
Three.js基础功能学习十三:太阳系实例上
前端·javascript·vue.js·学习·3d·前端框架·three
xiaoqi92218 小时前
React Native鸿蒙跨平台如何实现分类页面组件通过searchQuery状态变量管理搜索输入,实现了分类的实时过滤功能
javascript·react native·react.js·ecmascript·harmonyos
打小就很皮...19 小时前
Tesseract.js OCR 中文识别
前端·react.js·ocr
qq_1777673719 小时前
React Native鸿蒙跨平台实现应用介绍页,实现了应用信息卡片展示、特色功能网格布局、权限/联系信息陈列、评分展示、模态框详情交互等通用场景
javascript·react native·react.js·ecmascript·交互·harmonyos