uniapp/vue根据文件路径后缀显示相应的icon图标,在uniapp中点击文件打开新页面查看文件

文前推荐一下👉前端必备工具推荐网站(图床、API和ChatAI、智能AI简历、AI思维导图神器等实用工具):
站点入口:http://luckycola.com.cn/
图床:https://luckycola.com.cn/public/dist/#/imghub
多种API:https://luckycola.com.cn/public/dist/#/
ChatAI:https://luckycola.com.cn/public/dist/#/chatAi
AI思维导图神器:https://luckycola.com.cn/public/dist/#/aiQStore/aiMindPage

uniapp中根据文件路径后缀显示相应的icon图标(vue中同方法),并在点击文件打开新页面查看文件详情


需要准备一套iconfont彩色图标,如果不会在uniapp中使用多色图标,请先移步:uni-app使用阿里iconfont多色图标


先上效果,客官满意的话请继续看
文件后缀
点击文件跳转
在这里插入图片描述

截取文件后缀的方法

  • 通过split方法
var fileUrl = "https://www.baidu.com/f12daf12ds312f1asd.png";
//截取后缀
var suffix = fileUrl.split('.').pop().toLowerCase();
consolg.log(suffix);//png
  • 通过substring方法
var fileUrl = "https://taobao.org/gsdf455gsdf64.docx";
//截取后缀
var suffix = fileUrl.substring(fileUrl.lastIndexOf('.') + 1);
consolg.log(suffix);//docx

结合uniapp/Vue截取后缀显示显示相应的icon图标

  1. 先引入多色的iconfont图标,->uni-app使用阿里iconfont多色图标
    我这里的iconfont公共类名是icon
    在这里插入图片描述
  • 记得在App.vue(uniapp中)引入
<style>
   @import url("./style/iconfont_css.css");
   /*每个页面公共css */
</style>
  1. 在页面的data中定义
export default {
	data() {
		return {
		  //存放关于文件信息的数组
			aboutFileList: [],
		   //用于筛选后缀名的数组对象
			icon: [
				{
					icon_class: 'icon-file_word',
					suffix: 'doc'
				},
				{
					icon_class: 'icon-file_word',
					suffix: 'docx'
				},
				{
					icon_class: 'icon-file_ppt',
					suffix: 'pptx'
				},
				{
					icon_class: 'icon-file_mp3',
					suffix: 'mp3'
				},
				{
					icon_class: 'icon-file_zip',
					suffix: 'zip'
				},
				{
					icon_class: 'icon-file_xls',
					suffix: 'xls'
				},
				{
					icon_class: 'icon-file_xls',
					suffix: 'xlsx'
				},
				{
					icon_class: 'icon-file-photo',
					suffix: 'png'
				},
				{
					icon_class: 'icon-file-photo',
					suffix: 'gif'
				},
				{
					icon_class: 'icon-file-photo',
					suffix: 'jpg'
				},
				{
					icon_class: 'icon-file-photo',
					suffix: 'svg'
				},
				{
					icon_class: 'icon-file-psd',
					suffix: 'psd'
				},
				{
					icon_class: 'icon-file-txt',
					suffix: 'txt'
				},
				{
					icon_class: 'icon-file-mp4',
					suffix: 'mp4'
				}
			]
		};
	},
}
  1. 在methods中请求数据并赋给data中的aboutFileList
  2. 在页面中渲染数据
		<!-- 列表渲染-->
	<view v-for="item in filelist" :key="item.id">
             	<!-- fileUrl是数据中的文件路径-->
			<view class="minutes" @click="openFile(item.fileUrl)">
			              
				<view class="minutes_logo">
				<!-- 这里在函数中处理函数,接受一个路径,根据路径获取后缀,最后返回一个类名-->
				    <view :class="parsingSuffix(item.fileUrl)">
				    </view>
				 </view>
				<view class="minutes_right">
				    	<!-- title是数据中的文件名-->
					<view class="minutes_right_context">{{ item.title }}</view>
					<view class="minutes_right_botton">
						<view class="minutes_right_you">发布时间:{{ item.gmtModified }}</view>
					</view>
				</view>
			</view>
	</view>
  1. 在methods中定义一个处理后缀名字的函数parsingSuffix
	    //解析出类名
		parsingSuffix(url) {
			// 截取路径“.”后面的字符串
			var suffix = url.substring(url.lastIndexOf('.') + 1);
			// 筛选只有一个子项的数组
			var iconSuffix = this.icon.filter(items => {
			   //拿截取出来的后缀和icon数组中的对比筛选
				return items.suffix == suffix;
			});
			//最后返回一个公共icon + 文件icon类名
			return 'icon ' + iconSuffix[0].icon_class;
		},
  • 这里已经能实现根据文件路径后缀显示相相应的icon图标

uniapp中点击文件打开新页面查看文件

  • 其实很简单,根据文档中新开页面打开文档,上面渲染页面时绑定了一个openFile点击事件,传入参数文件路径
  • h5端,直接更改window对象中的location属性就行
  openFile(url){
    location.href  =  url;
  }
		openFile(url) {
			uni.openFileFile({
				url: url,
				success: res => {
					if (res.statusCode === 200) {
						uni.openDocument({
							filePath: res.tempFilePath,
							// 如果文件名包含中文,建议使用escape(res.tempFilePath)转码,防止ios和安卓客户端导致的差异
							success: function(res) {
								console.log('打开文档成功');
							}
						});
					}
				}
			});
		},

没啦没啦,问题解决了嘛,给个赞呗

更多推荐:wantLG的《uni-app使用阿里iconfont多色图标


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wantLG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值