Uniapp使用UviewPlus在APP当中进行文件上传的解决方案

Uniapp使用UviewPlus在APP当中进行文件上传的解决方案

吐槽:真的可以不用就不要用uniapp,就像s一样,可以的话上Recat好很多,踩了很多坑。

原因

  1. 如果你是axios的忠实奴隶那么你会遇到第一个坑,就是uniapp下的原生编译不支持FormathData数据结构这就说明你就不能使用axios来进行文件流的传输,但是这并不代表你就不能用base64来进行逆天操作。
  2. 如果使用uniapp的原生的getFileSystemManager那么很好,走到第二的坑,uniapp的app端不支持这个的来调取系统api
  3. 如果你使用功能poi来的话,非常恭喜你走到第三个坑,那就是你根本看不懂你在写的是什么s

解决方法

  1. 直接自己封装好uniapp的原生的uploadFile来进行文件的上传
  2. 注意这个的上传的方式是表表单的形式,如果你使用的是SpringBoot来做后端的话那么就直接使用pram就可以进行数据的接受了
  3. 这个注意你如果进行内网转发或者其他的代理的话你就不要想你的请求头到里面的数据还活着,所以你就必须要在forData的数据域里面进行数据的传输,然后这个他给你的语法糖,这个主要的功能只是进行文件的上传,你的这个也可以直接被SpringBoot来进行处理的

实现过程

vue 复制代码
const uploadImagePlan = (imageList, event) => {
	console.log("图片上传", event)

	const fileUrl = event.file[0].url;
	const base64Prefix = "data:image/jpeg;base64,"; // 根据文件类型设置前缀
	console.log(fileUrl)

	plus.io.resolveLocalFileSystemURL(fileUrl, (entry) => {
		console.log('文件存在:', entry); // 输出条目信息
	}, (error) => {
		console.error('文件不存在或无法访问:', error); // 输出错误信息
	});

	const fileName = fileUrl.split('/').pop(); // 设置自定义的文件名
	const fileExtension = fileUrl.split('.').pop(); // 获取文件扩展名

	uni.uploadFile({
		url: server.serverUrl() + "/uploadImage", // 后端上传接口
		filePath: fileUrl,
		name: "file", // 设置文件名
		header: {
			'file-extension': fileExtension, // 发送扩展名到后端
			"fileName": fileName
		},
		formData: {
			// 其他需要传递的表单数据
			userId: '12345', // 示例字段,可以根据需求添加
			fileName: fileName
		},
		success: (res) => {
			console.log('上传成功', res);
			const data = JSON.parse(res.data)
			imageList.value.push({
				url: data.data.fileUrl
			})
		},
		fail: (err) => {
			console.error('上传失败', err);
		}
	});
}

后端略

相关推荐
2501_916008895 小时前
用多工具组合把 iOS 混淆做成可复用的工程能力(iOS混淆|IPA加固|无源码混淆|Ipa Guard|Swift Shield)
android·开发语言·ios·小程序·uni-app·iphone·swift
阿金要当大魔王~~5 小时前
uniapp 页面标签 传值 ————— uniapp 定义 接口
前端·javascript·uni-app·1024程序员节
全栈软件开发5 小时前
uniapp三端影视源码苹果cms自动采集电影视频网站源码前端源码带VIP
前端·uni-app·影视源码
开发者小天11 小时前
uniapp中对接开发激励广告视频
uni-app
奎歪歪11 小时前
UniApp缓存系统详解
缓存·uni-app·1024程序员节
2501_9151063213 小时前
iOS 打包 IPA 全流程详解,签名配置、工具选择与跨平台上传实战指南
android·macos·ios·小程序·uni-app·cocoa·iphone
00后程序员张14 小时前
iOS 混淆实操指南多工具组合实现 IPA 混淆、加固与发布治理 IPA 加固
android·ios·小程序·https·uni-app·iphone·webview
十五春会1 天前
【uniapp】App平台展示pdf文件
pdf·uni-app
请叫我欧皇i1 天前
保姆级教程vscode创建uniapp vue3+ts+pinia项目并实现自动导入、打包功能
ide·vscode·uni-app
海鸥两三1 天前
Uni-App(Vue3 + TypeScript)项目结构详解 ------ 以 Lighting-UniApp 为例,提供源代码
vue.js·typescript·uni-app·1024程序员节