uniapp 安卓端 使用axios 和 renderjs 上传 FormData 参数

发布于:2025-02-21 ⋅ 阅读:(16) ⋅ 点赞:(0)

<template>
	<view>
		<!--<button @click="request">调用 RenderJS 方法</button>-->
		<view v-show="false" :data="data" :change:data="requestModule.realRequest"></view>
	</view>
</template>

<script>
	import config from '@/config'
	import {
		getToken
	} from '@/utils/auth'
	export default {
		data() {
			return {
				data: {
					url: '',
					formData: "",
					randomValue: ''
				}
			}
		},
		methods: {
			request(url, formData) {
				this.data = {
					url: config.baseUrl+url,
					formData: formData,
					authorization: getToken(),
					randomValue: Math.floor(1000 + Math.random() * 9000)
				}
			},
			response(resp) {
				console.log("resp", resp);
				this.$emit('response', resp);
			}
		}
	}
</script>

<script module="requestModule" lang="renderjs">
	import axios from 'axios';
	export default {
		methods: {
			realRequest(newValue, oldValue) {
				//const obj = JSON.parse(newValue);
				if(!newValue.url) {
					return
				}
				const formData = new FormData();
				formData.append('form', JSON.stringify(newValue.formData));
				
				axios.post(newValue.url, formData, {
				  headers: {
				    'Content-Type': 'multipart/form-data', // 确保设置正确的 Content-Type
					'Authorization': newValue.authorization
				  }
				})
				.then(response => {
				  //console.log('文件上传成功:', response.data);
				  this.$ownerInstance.callMethod("response", response);
				})
				.catch(error => {
				  console.error('文件上传失败:', error);
				  //this.$ownerInstance.callMethod("response", error);
				});
				
			}
		}
	};
</script>

<style>

</style>

调用

<template>
	<view>
		<button @click="request">调用 RenderJS 方法</button>
		<requestFormData ref="requestFormData" @response="response"></requestFormData>
	</view>
</template>

<script>
	import requestFormData from '@/components/requestFormData/requestFormData.vue';
	export default {
		components: {
		    requestFormData,
		},
		data() {
			return {
				
			}
		},
		methods: {
			request() {
				this.$refs.requestFormData.request('/foundation/api/mingmenDailyMiss/edit',{'businessData':JSON.stringify({'id':'1879451746490097665','name':'蓝颜来','birth':'1888-15-12','demiseTime':'2000-11-01','buriedIn':'南阳市','introduction':'我是简介','motto':'我是座右铭'}),'continuedUseFileIds':''});
			},
			response(e){
				console.log("父组件拿到响应", e);
			}
		}
	}
</script>

<style>

</style>