uniapp 微信小程序 判断数据返回的是jpg还是pdf,以及pdf预览

<template>
<view class="approval-notice">
	<block v-for="(imgItem, idx) in drivingLicense" :key="idx">
		//如果是非图片,那就走pdf预览
		<view class="pdf-item" v-if="Object.keys(thumbnail).includes(getFileType(imgItem))" @click="handlePreview(idx,drivingLicense)">
			<image src="../static/pdf-icon.png" mode="aspectFill"></image>
			<text class="text">{{getFileName(imgItem)}}</text>
		</view>
		//如果是图片,那就走图片预览
		<view class="img-item" v-else @click="handlePreview(idx,drivingLicense)">
			<image :src="imgItem" mode="aspectFill"></image>
			<text class="text">{{getFileName(imgItem)}}</text>
		</view>
	</block>
</view>
</template>
data() {
	return {
		//数据返回的文件列表(↓↓包含以下格式↓↓)
		drivingLicense:['https://www.baidu.com/5cf22168b26b0_20230720114248A003.jpg','https://www.baidu.com/5cf22168b26b0_20230720114278A003.jpg'],
		fileTypeLimit:['png', 'jpg', 'jpeg', 'pdf'],//仅支持这些格式
		thumbnail:{
			pdf: '',
			apk: '',
			mp4: ''
		}
	}
	}
methods: {
	//获取文件后缀名
	getFileType(fileName, isUserType = false) {
	  if (!isUserType) {
	    return fileName.split('.').pop().toLowerCase()
	  } else {
	    return fileName.split('/').pop().toLowerCase()
	  }
	},
	//获取文件名
	getFileName(url){
		return url.split('/').pop();
	},
	//预览
	handlePreview(index,list){
		const fileType = this.getFileType(list[index])
		//如果是不支持的文件类型或者是需要代替的缩略图的类型,则新标签页打开显示
		if (Object.keys(this.thumbnail).includes(fileType) || !this.fileTypeLimit.includes(fileType)) {
		    uni.navigateTo({
		    	//跳转到pdf.vue页面
				url:"/packageProjectList/pdf/pdf?url="+list[index]
			})
		}else{
			//图片预览已经在其他文章中有例子
			this.$common.previewImage(index,list)
		}
	},
}

pdf.vue

<template>
	<view>
		<web-view :src="webViewSrc"></web-view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				webViewSrc:''
			}
		},
		onLoad(option) {
			this.webViewSrc = option.url;
		},
		methods: {
			
		}
	}
</script>

<style>

</style>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值