uni-file-picker上传图片到后端服务器并存入数据库

文章讲述了在uniapp中实现用户头像上传的两种方式,一种是使用uni.uploadFile结合uni.chooseImage,另一种是使用uni-file-picker组件。作者提到,虽然uni-file-picker可以简化图片回显等操作,但深入学习uni.uploadFile仍然是必要的。
摘要由CSDN通过智能技术生成

最近在做一个需求,使用uniapp上传用户头像。后端会有一个处理上传图片返回图像链接的接口。在uniapp官网关于上传的组件有两个:

(1)uni.uploadFile(object)

(2)uni-file-picker

如果使用uni.uploadFile,前端的代码大致可以这样写:

uni.chooseImage({
	success: (chooseImageRes) => {
		const tempFilePaths = chooseImageRes.tempFilePaths;
		uni.uploadFile({
			url: 'https://www.example.com/upload', //仅为示例,非真实的接口地址
			filePath: tempFilePaths[0],
			name: 'file',
			formData: {
				'user': 'test'
			},
			success: (uploadFileRes) => {
				console.log(uploadFileRes.data);
			}
		});
	}
});

这是官网给出的范例。对应的HTML:

<view class="avatar" @click="Imageupload">头像上传</view>

<script>
...
methods:{
Imageupload(){
    uni.chooseImage(){
     ....
   }

}
}

</script>

然后就是 自己写样式了。不过还要写图片回显的函数,不然不能看到图片上传的效果,还是挺麻烦的。

所以,为了方便,我用的是uni-file-picker+uni.uploadFile组合。也算是偷懒的方法吧。

<uni-forms-item label="选择头像" name="avatar" labelWidth="90">
<uni-file-picker limit="1" :del-icon="false" disable-preview :imageStyles="imageStyles"file-mediatype="image" :auto-upload="false" @select="upload">选择</uni-file-picker>
</uni-forms-item>


...

<script>
		upload(e) {
				const tempFilePaths = e.tempFilePaths;//e是获取的图片源
				uni.uploadFile({
					url: 'http://localhost:9191/files/upload', //上传图片的后端接口
					filePath: tempFilePaths[0],
					name: 'file',
					success: res => {
						this.formData.avatar = res.data
						console.log(this.formData.avatar, "头像")
					}
				})
			}
</script>

当然我这个是一种偷懒的方法,要学东西还是要深入的去了解其所以然。 

uni-file-picker 是一个基于 uni-app 框架开发的文件选择器插件,可以用于选择并上传文件。要将上传的文件保存到自己的服务器,需要进行如下步骤: 1. 在服务器端编写文件上传接口,可以使用 Node.js、PHP、Java 等语言进行编写。 2. 在 uni-app 项目中引入 uni-file-picker 插件,使用时需要传入上传接口的 URL。 3. 在上传接口中接收客户端上传的文件,并保存到服务器指定的目录中。 以下是一个简单的示例: 1. 服务器上传接口(使用 Node.js 编写): ```javascript const express = require('express'); const multer = require('multer'); const app = express(); const upload = multer({ dest: 'uploads/' }); app.post('/upload', upload.single('file'), (req, res) => { console.log(req.file); // 将文件保存到指定目录中,并返回上传成功的信息 res.send('上传成功'); }); app.listen(3000, () => { console.log('服务器已启动'); }); ``` 2. uni-app 项目中使用 uni-file-picker 插件: ```html <template> <view> <uni-file-picker :url="uploadUrl" @success="onSuccess"></uni-file-picker> </view> </template> <script> export default { data() { return { uploadUrl: 'http://localhost:3000/upload' }; }, methods: { onSuccess(res) { console.log(res); } } }; </script> ``` 3. 客户端上传文件,服务器端保存文件到指定目录中。 注意:以上示例仅供参考,实际情况需要根据自己的需求进行调整。另外,在实际项目中需要考虑文件上传安全性等问题,建议使用 HTTPS 协议进行传输,并对上传的文件进行校验。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值