记录一次使用钉钉小程序使用内嵌网页上传文件

文章讲述了如何使用小程序的web-view实现与内嵌H5页面的通信,包括携带token、iOS平台遇到的特殊问题(如JS限制和formData提交问题),以及针对不同平台选择合适的API的建议。

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

使用小程序本身提供的小程序web-view

第一步:首先要打通小程序和内嵌h5之间交流的通道

小程序部分

<web-view id="起个自己的定义的名字" :src="`${h5Url}`" @message="通信的方法"></web-view>
import 'dingtalk-jsapi/entry/mobile';
	export default {
	  data() {
		return {
		  h5Url: '替换为实际的H5页面地址',
		  token: this.$store.state.userInfo.token,
		  webViewContext: ''
		};
	  },
	  onLoad() {
		this.webViewContext = dd.createWebViewContext('起个自己的定义的名字')
	  },
	  methods: {
		test(e) { //接收来自网页的信息和传递信息的作用
			this.webViewContext.postMessage({
				token: this.token
				// 携带token
			  })
			console.log('内嵌网页传到小程序',e);
		},
	  },
	};

网页部分js

这里,只放部分的代码供参考使用

	let token = ''; //上传时设置的文件头token
	dd.onMessage = function(e) { //接收小程序传过来的token
		console.log('接收消息',e)
		token = e.token
	}
	let mess = '文件上传后想给小程序的信息';
	my.postMessage({
		message: mess; 
	})
	//文件提交格式力推 'Content-Type': 'multipart/form-data',

接下来是监听文件上传的form表单,然后用axios去向后端请求,then再做处理

第二步:有几个坑,主要是不同平台的问题,安卓用起来都没什么问题,就是苹果有几个特别的坑。

1.苹果在内嵌网页(web-view)中好像做了什么特别的限制,部分js功能失效了,比如提示框之类,具体等以后的大佬解答吧

2.苹果提交formData表单数据是有问题的,需要在内嵌h5的头部导入一个同时兼容安卓和ios的js,即可

3.因为我之前选择了uniapp开发嘛,但是uni.onMessage、uni.postMessage这几个方法没有考虑ios用不了,在内嵌view开发中,我建议不止是钉钉小程序要用,什么平台的小程序就用什么开头的,比如支付宝就用my,微信就用wx,不要用uni。我就在这里,被坑了大半天。

记录一下,继续学习去了,拜拜!!!
有问题的可以在评论区或者私信我,我会给予力所能及的解答

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值