uniapp 实现 uni-file-picker 效果

模板

bash 复制代码
<uni-forms-item label="营业执照" required name="xkz_pic">
			<view class="example-body">
				<uni-file-picker 
				    v-model="fileLists" 
					file-mediatype="image" 
					file-extname="png,jpg,jpeg"
					:image-styles="imageStyles"
					:limit="1"
					title="上传营业执照,图片大小不超过2M的文件"
					@select="uploadSelect" 
					@success="uploadSuccess"
					@fail="uploadFail" 
					@delete="uploadDel"
				>
				</uni-file-picker>
			</view>

			
</uni-forms-item>

javascript

bash 复制代码
//更新营业执照,必须使用computed,如果使用接口返回的图片地址,图片不会渲染
const fileLists=computed({
	//取值
	get(){
		
		let list = [];
		let url=baseurl+dataFormAdd.xkz_pic
		let extname=url.substring(url.lastIndexOf(".")+1)
		let item={
				url: url,
				extname: extname,
				name: 'yyzz'+extname
			
		}
		if(dataFormAdd.xkz_pic){
			list.push(item)
		}
		
		return list
	},
	
	//设置值
	set(value){
		console.log('设置值',value)
		console.log(value.length)
		if(value.length==0){
			dataFormAdd.xkz_pic=''
		}
	}

})
//核心代码,选择图片

const uploadSelect=(e)=>{
	console.log('选择图片',e)
	//#ifdef H5
	// h5上传-需要文件file对象
	const tempFilePaths = e.tempFiles[0].file;
	//#endif
	//#ifdef MP-WEIXIN
	// 微信小程序上传-需要微信临时提供临时地址
	const tempFilePaths = e.tempFilePaths;
	//#endif

	console.log('临时路径',tempFilePaths[0],uploadPicAction)
	//上传文件
	uni.uploadFile({
	                    
						//#ifdef H5
						url:uploadPicAction,
						//#endif
						//#ifdef MP-WEIXIN
						url: 'http://www.baidu.cn/upload/uploadimage',
						//#endif
	                    // 要上传文件对象-h5和微信小程序上传参数不一样只能存在一个
	                    // H5上传
						//#ifdef H5
						 file: tempFilePaths,
						//#endif
						
						//#ifdef MP-WEIXIN
						// 微信小程序上传
						filePath: tempFilePaths[0],
						//#endif
	                    //文件对应的 key , 开发者在服务器端通过这个 key 可以获取到文件二进制内容
	                    name: 'file',
	                    // 请求头设置
	                    // 我们是需要token和用户id登录时存从uni-app数据存储中取
	                    // header: {
	                    //     "token": uni.getStorageSync('token'),
	                    //     "tenant-id": uni.getStorageSync('tenant-id')
	                    // },
	                    // 成功函数
	                    success: (res) => {
	                        // uni.uploadFile默认在外面包了一层data
	                        console.log('上传成功', res.data);
							// uni.uploadFile返回来的结果默认是JSON格式字符串,需要用JSON.parse转换成js对象
	                        console.log('上传数据转换',JSON.parse(res.data));
	                        // 取到文档服务器的值
	                        let uploaddata = JSON.parse(res.data)
							let url=uploaddata.data.url
	                        let x = {}
	                        // 下面3个值是uni-app规定的一个不能少
	                        x.url = url
	                        x.extname = url.substring(url.lastIndexOf(".")+1)
	                        x.name = '营业执照'
							dataFormAdd.xkz_pic=url
	                        //fileLists.value.push(x)
							//fileLists.push(x)
							//fileLists.value=x
							//console.log('文件列表',fileLists.value, x,dataFormAdd)
							
	                    },
	                    // 失败提示用户重新上传
	                    fail: error => {
	                        console.log('失败', error);
	                    }
	                })
	

	
}
//删除图片

const uploadDel=(e)=>{

	console.log('删除图片',e)
	//dataFormAdd.xkz_pic=''
}


//上传成功
const uploadSuccess=(e)=>{
	//没有uniCloud上传空间,不会触发,当时这个地方困扰了好久,所以没有上传空间,只能通过uploadSelect来实现上传控制
	
	console.log('上传成功',e)
}

//上传失败
const uploadFail=(e)=>{
	//没有uniCloud上传空间,不会触发
	console.log('上传失败',e)
}
相关推荐
源码潇潇和逸逸10 分钟前
独立部署高校圈子平台:PHP+UniApp打造社交+交易+服务一站式校园解决方案
开发语言·uni-app·php
2501_916008893 小时前
2026 iOS 证书管理,告别钥匙串依赖,构建可复制的签名环境
android·ios·小程序·https·uni-app·iphone·webview
2501_9159184110 小时前
iOS App 拿不到数据怎么办?数据解密导出到分析结构方法
android·macos·ios·小程序·uni-app·cocoa·iphone
2501_9160088910 小时前
iOS App 抓包看不到内容,从有请求没数据一步步排查
android·ios·小程序·https·uni-app·iphone·webview
扶苏100210 小时前
记一次 uni-app开发微信小程序 textarea 的“伪遮挡”踩坑实录
微信小程序·小程序·uni-app
RuoyiOffice1 天前
企业请假销假系统设计实战:一张表、一套流程、两段生命周期——BPM节点驱动的表单变形术
java·spring·uni-app·vue·产品运营·ruoyi·anti-design-vue
KongHen021 天前
uniapp-x实现自定义tabbar
前端·javascript·uni-app·unix
RuoyiOffice1 天前
SpringBoot+Vue3+Uniapp实现PC+APP双端考勤打卡设计:GPS围栏/内网双模打卡、节假日方案、定时预生成——附数据结构和核心源码讲解
java·spring·小程序·uni-app·vue·产品运营·ruoyi
2501_915921431 天前
2026 iOS 上架新趋势 iOS 发布流程模块化
android·ios·小程序·https·uni-app·iphone·webview
窝子面2 天前
uni-app的初体验
uni-app