vue项目中实现头像上传(axios请求)

vue项目中做个人资料时需要实现用户头像的更换

html部分

<template>  
  <div class="dataLeft">
	<p class="pic" style="width: 106px">
       <img :src="this.$picUrl+userInor.pic" alt="">//src部分是从后端获取的图像,再次不在赘述
    </p>
    <p class="upload">上传头像
	<input type="file" @change="upDataPic" enctype="" accept="image/*" class="uploadBtn"/>
    </p>
   </div>
</template>

css部分

<style>
.pic{
		width:106px;
		height:106px;
		overflow: hidden;
		border-radius:50%;
		background:white;
	}
.pic img{
		width: 100%;
		height: 100%;
	}
.upload{
		font-size:12px;
		text-align: center;
		line-height: 36px;
	}
</style>

js部分

<script>
upDataPic(e){								
	let file = e.target.files[0];  
	var picData=new FormData();
	picData.append('file',file,file.name);
	// console.log(picData)
	this.$http({
		url:"接口url",
		method:'post',
		data:picData,
	})
	.then(response=>{
		if(response.data.success==true){
			this.$swal.fire({//swal是引用的弹框插件,如需要,可百度查找
			    text:'上传成功',
				icon:'success'
			})
			this.userIcon=response.data.filePath;
			this.getInfor();
		}else{
			this.$swal.fire({//swal是引用的弹框插件,如需要,可百度查找
				text:res.data.msg
			})
		}
	})
	.catch(Error=>{
					
	})
}
</script>

 

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以通过以下步骤来实现: 1. 安装 `axios`, `vue` 和 `element-ui`。 ```bash npm install axios vue element-ui --save ``` 2. 在 `main.js` 文件引入和使用 `element-ui`。 ```javascript import Vue from 'vue' import ElementUI from 'element-ui' import 'element-ui/lib/theme-chalk/index.css' Vue.use(ElementUI) ``` 3. 在需要上传文件的组件,使用 `el-upload` 组件。 ```html <template> <el-upload class="upload-demo" action="/api/upload" :before-upload="beforeUpload" :on-success="onSuccess" :on-error="onError" :headers="{ Authorization: 'Bearer ' + token }" multiple> <el-button size="small" type="primary">点击上传</el-button> <div slot="tip" class="el-upload__tip">只能上传 jpg/png 文件,且不超过 500kb</div> </el-upload> </template> <script> export default { data() { return { token: 'your-token' } }, methods: { beforeUpload(file) { const isJPG = file.type === 'image/jpeg' || file.type === 'image/png' const isLt500K = file.size / 1024 < 500 if (!isJPG) { this.$message.error('上传头像图片只能是 JPG/PNG 格式!') } if (!isLt500K) { this.$message.error('上传头像图片大小不能超过 500KB!') } return isJPG && isLt500K }, onSuccess(response, file, fileList) { this.$message.success('上传成功!') }, onError(error, file, fileList) { this.$message.error('上传失败!') } } } </script> ``` 4. 在 `beforeUpload` 方法,可以对文件进行验证和处理。例如,只允许上传 jpg/png 格式的图片,并且大小不能超过 500KB。 5. 在 `onSuccess` 和 `onError` 方法,可以处理上传成功和失败的情况。 6. 在 `headers` 设置请求头,例如在此处设置了 `Authorization` 头部,用于传递 Token 信息。 7. 在 `action` 设置上传的接口地址。 8. 在服务端接口,可以使用 `multer` 模块来处理上传的文件。例如: ```javascript const express = require('express') const multer = require('multer') const app = express() const storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, 'uploads/') }, filename: function (req, file, cb) { cb(null, file.originalname) } }) const upload = multer({ storage: storage }) app.post('/api/upload', upload.single('file'), (req, res) => { res.send({ success: true }) }) app.listen(3000, () => console.log('Server started on port 3000')) ``` 在此处,通过 `multer` 模块设置了上传文件的存放路径和文件名,并在路由使用 `upload.single('file')` 方法来处理上传的文件。最后返回上传成功的信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值