小程序文件预览,页面预览不下载

该代码段展示了在uni-app框架下,如何利用web-view组件结合base64编码和http配置来实现文件的在线预览功能。onLoad方法中处理参数并设置导航栏标题,同时将url转换为base64编码后作为web-view的src属性值,以加载预览页面。
摘要由CSDN通过智能技术生成
<template>
	<view>
		<web-view :webview-styles="webviewStyles" :src="src"></web-view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				src: "",
				webviewStyles: {
					progress: {
						color: '#2979ff'
					},
					width: '100vw',
					height: '100vh'
				}
			}
		},
		onLoad(option) {
			uni.setNavigationBarTitle({
				title: option.fileName
			});
			console.log("预览地址:",
				`${uni.$u.http.config.baseURL}/kkfile/onlinePreview?url=${this.base64_encode(option.url)}`)
				
			this.src = `${uni.$u.http.config.baseURL}/kkfile/onlinePreview?url=${this.base64_encode(option.url)}`
		},
		methods: {
			base64_encode(str) { // 编码,配合encodeURIComponent使用
				var c1, c2, c3;
				var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
				var i = 0,
					len = str.length,
					strin = '';
				while (i < len) {
					c1 = str.charCodeAt(i++) & 0xff;
					if (i == len) {
						strin += base64EncodeChars.charAt(c1 >> 2);
						strin += base64EncodeChars.charAt((c1 & 0x3) << 4);
						strin += "==";
						break;
					}
					c2 = str.charCodeAt(i++);
					if (i == len) {
						strin += base64EncodeChars.charAt(c1 >> 2);
						strin += base64EncodeChars.charAt(((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4));
						strin += base64EncodeChars.charAt((c2 & 0xF) << 2);
						strin += "=";
						break;
					}
					c3 = str.charCodeAt(i++);
					strin += base64EncodeChars.charAt(c1 >> 2);
					strin += base64EncodeChars.charAt(((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4));
					strin += base64EncodeChars.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >> 6));
					strin += base64EncodeChars.charAt(c3 & 0x3F)
				}
				return strin
			},
			base64_decode(input) { // 解码,配合decodeURIComponent使用
				var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
				var output = "";
				var chr1, chr2, chr3;
				var enc1, enc2, enc3, enc4;
				var i = 0;
				input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
				while (i < input.length) {
					enc1 = base64EncodeChars.indexOf(input.charAt(i++));
					enc2 = base64EncodeChars.indexOf(input.charAt(i++));
					enc3 = base64EncodeChars.indexOf(input.charAt(i++));
					enc4 = base64EncodeChars.indexOf(input.charAt(i++));
					chr1 = (enc1 << 2) | (enc2 >> 4);
					chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
					chr3 = ((enc3 & 3) << 6) | enc4;
					output = output + String.fromCharCode(chr1);
					if (enc3 != 64) {
						output = output + String.fromCharCode(chr2);
					}
					if (enc4 != 64) {
						output = output + String.fromCharCode(chr3);
					}
				}
				return utf8_decode(output);
			},
		}
	}
</script>

<style>

</style>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值