vue 根据文档类型显示相应的类型图标

本文档介绍了如何在Vue应用中根据文档类型显示对应的图标。通过封装js方法setIconType,该方法处理包括jpg、gif、png、docx、mp3、xlsx等多种类型的文件,并在页面代码中调用以展示不同类型的图标。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实现效果:
在这里插入图片描述

具体代码如下:
1、页面代码:

<ul class="processlist" v-if="flow.length">
      <li v-for="(item,index) in flow" @click="prewImg(item,index)" :key="item.id">
        <div class="icons ">
          <svg class="icon" aria-hidden="true">
            <use :xlink:href="iconType(item.ext).class"></use>
          </svg>
        </div>
        <div class="name">
          <p class="filename">{
  
  {item.file_name}}</p>
          <p class="filesize">2.2M</p>
        </div>
      </li>
    </ul>

<script>
import {unity} from "common/js/unity"
  data() {
    return {
      iconType:unity.setIconType
    };
  },
</script>

2、封装js
定义setIconType方法,枚举各附件类型jpg,gif,png,docx,mp3,xlsx等

export const unity = {
    setIconType(typ
### 如何在 Vue3 中根据 URL 检查文件类型 为了实现基于URL检查文件类型的逻辑,在前端可以通过解析URL并提取其扩展名来推断文件类型。此方法适用于大多数常见情况,因为通常文件的MIME类型可以从其扩展名推测出来。 #### 解析 URL 并获取文件扩展名 通过 JavaScript 的 `URL` 对象可以轻松处理传入的字符串形式的链接,并从中抽取路径部分用于进一步分析: ```javascript function getFileExtensionFromUrl(urlString) { const url = new URL(urlString); const pathParts = url.pathname.split('/').pop().split('?')[0].toLowerCase(); return pathParts.includes('.') ? pathParts.substring(pathParts.lastIndexOf('.') + 1) : ''; } ``` 上述函数接收一个完整的URL作为参数,返回该地址指向资源可能具有的扩展名[^2]。 #### 映射扩展名到 MIME 类型 一旦获得了文件扩展名,则可以根据预定义映射表将其转换成对应的MIME类型以便后续处理或展示给用户: ```javascript const fileExtensionsToMimeTypeMap = { 'jpg': 'image/jpeg', 'jpeg': 'image/jpeg', 'png': 'image/png', 'gif': 'image/gif', 'pdf': 'application/pdf', // 更多映射... }; function getMimeTypeByExtension(extension) { return (fileExtensionsToMimeTypeMap[extension.toLowerCase()] || 'unknown/unknown'); } ``` 这段代码片段展示了如何创建简单的查找表以及相应的辅助函数来进行这种转换。 #### 将功能集成至 Vue 方法中 最后一步就是把这些工具封装进Vue组件的方法里,使得可以在视图层调用它们完成特定的任务,比如显示图标、提示信息或是触发下载行为等: ```typescript <template> <!-- ... --> </template> <script lang="ts"> import { defineComponent } from 'vue'; export default defineComponent({ name: 'FileTypeChecker', methods: { async checkAndDownloadFile(fileUrl:string){ try{ const extension = getFileExtensionFromUrl(fileUrl); const mimeType = getMimeTypeByExtension(extension); console.log(`The detected mime type is ${mimeType}`); if(mimeType !== 'unknown/unknown'){ this.downloadFile(fileUrl, `${Date.now()}.${extension}`); } }catch(error){ console.error('Error occurred while checking or downloading the file:', error); } }, downloadFile(http:string, fileName:string):void { let link = document.createElement("a"); link.style.display = "none"; link.href = '/dev-api' + http; link.setAttribute("download", fileName); document.body.appendChild(link); link.click(); }, // 上述提到的帮助函数也应在此处声明 } }); </script> ``` 以上实现了从输入URL开始直到最终执行下载动作的一整套流程,其中包含了必要的错误捕获机制以提高程序健壮性。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值