图片上传---uniapp公众号项目uni-file-picker组件+uni.uploadFile方法

1.使用u-select文件上传

<uni-section title="">
							<view class="example-body">
								<uni-file-picker limit="3" title="最多选择3张图片" @select="select($event)"
									@delete="pickerDelete($event)"></uni-file-picker>
							</view>
						</uni-section>

2.准备数据

activeFormData: {
					pics: [], //用户上传的图片(最多五张)
				},
file: '',
				ImageUrl: '',

3.选择图片和上传图片--uni.uploadFile,上传成功会提示

//选择图片
			select(e) {
				console.log(e, 'eee')
				e.tempFilePaths.map(item => {
					this.file = item
					console.log(this.file, '11111')
				})
				let data;
				const a = uni.uploadFile({
					url: 'http://ck.kml169.com/community_api/Upload/upload', //仅为示例,非真实的接口地址
					filePath: this.file,
					name: 'file',
					header: {
						'access-token': uni.getStorageSync('token')
					},

					success: (res) => {
						console.log(res.data, 88888);
						// 后端返回的是json String类型的数据,必须转换成json对象
						data = JSON.parse(res.data)

						console.log(data, '1111')
						// console.log(data.data.url, 88888);
						// 这个地方我真傻,字段名和data中定义的字段不一致
						this.ImageUrl = data.data.url
						this.activeFormData.pics.push(this.ImageUrl)
						console.log(this.activeFormData.pics, '0000')
						uni.showToast({
							title: '上传成功',
							icon: 'none',
							duration: 2000
						})
					},

				});
				console.log(data, '000')
			},

4.删除图片成功后会提示

pickerDelete(e) {
				this.activeFormData.pics.map((item, i) => {
					this.activeFormData.pics.splice(i, 1)
				})
				uni.showToast({
					title: '删除成功',
					icon: 'none',
					duration: 2000
				})
				console.log(this.activeFormData.pics, '33333')
			},
对于使用Uni-App的开发者来说,可以使用Uni-File-Picker组件来实现图片上传的功能。下面是一个示例代码,展示了如何使用Uni-File-Picker组件上传图片: 1. 首先在页面的vue文件中引入Uni-File-Picker组件: ``` <template> <view> <uni-file-picker :count="1" @success="uploadSuccess" @fail="uploadFail" ></uni-file-picker> <button type="primary" @click="upload">上传图片</button> </view> </template> <script> export default { methods: { uploadSuccess(files) { console.log('上传成功', files); // 在这里处理上传成功后的逻辑 }, uploadFail(err) { console.log('上传失败', err); // 在这里处理上传失败后的逻辑 }, upload() { uni.chooseImage({ count: 1, success: (res) => { const tempFiles = res.tempFiles; if (tempFiles.length > 0) { uni.uploadFile({ url: 'http://your-upload-url', filePath: tempFiles[0].path, name: 'file', success: (res) => { if (res.statusCode === 200) { const data = JSON.parse(res.data); if (data.code === 0) { this.uploadSuccess(data.files); } else { this.uploadFail(data.message); } } else { this.uploadFail('上传失败'); } }, fail: (err) => { this.uploadFail(err.errMsg); } }); } }, fail: (err) => { console.log('选择图片失败', err); } }); } } } </script> ``` 在上面的示例中,Uni-File-Picker组件用于选择图片文件,并通过`count`属性限制只能选择1张图片。当选择成功后,会触发`success`事件,调用`uploadSuccess`方法进行上传成功后的处理;当选择失败后,会触发`fail`事件,调用`uploadFail`方法进行上传失败后的处理。 在`upload`方法中,首先使用`uni.chooseImage`选择图片,并通过`uni.uploadFile`将选中的图片上传服务器。在上传成功后,通过`uploadSuccess`方法处理上传成功后的逻辑;在上传失败后,通过`uploadFail`方法处理上传失败后的逻辑。 需要注意的是,示例中的上传接口URL需要根据实际情况进行修改。另外,还可以根据需要添加进度条等其他功能来完善上传图片的交互体验。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值