vue页面
<template>
<view>
<web-view src="/hybrid/html/index.html" @message="handleMessage"></web-view>
</view>
</template>
<script>
export default {
data() {
return {
prevPage:''
};
},
onLoad() {
let pages = getCurrentPages(); //获取所有页面栈实例列表
this.prevPage = pages[ pages.length - 2 ]; //上一页页面实例
},
onBackPress(){
this.prevPage.$vm.fileJude = true; //修改上一页data里面的fileJude参数值为true
},
methods: {
handleMessage(evt) {
uni.setStorageSync("file",evt.detail.data[0].file)
}
}
}
</script>
<style lang="scss">
</style>
html文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>文件管理器</title>
</head>
<body>
<input type="file" id="input">
<script src="https://js.cdn.aliyun.dcloud.net.cn/dev/uni-app/uni.webview.1.5.2.js"></script>
<script type="text/javascript">
let input =document.getElementById('input')
document.addEventListener('UniAppJSBridgeReady', function(res) {
input.onchange = (event) => {
var file = event.target.files[0];
var data_64; //base64字符串
var name; //名字
name= event.path[0].files[0].name
var reader = new FileReader();
reader.readAsDataURL(file); //读出 base64
reader.onloadend = ()=> {
// 文件的base64值
data_64= reader.result.substring(reader.result.indexOf(",")+1);
data_64= ';base64,'+data_64
let file = JSON.stringify({name:name,fileBase64:data_64})
uni.postMessage({
data: {
file:file
}
});
};
}
});
</script>
</body>
</html>