<div class="row-center"> <div class="Default-avatar cur active" @click="setAvater"> <img :src="userInfo.avatar || require('./image/Default-avatar.png')" alt=""> </div> <input type="file" id="file" v-show="false" /> </div>
setAvater() { var file = document.getElementById('file'); file.click() const _this = this file.onchange = async function (e) { var fileData = e.target.files[0];//获取到一个FileList对象中的第一个文件(File 对象),是我们上传的文件 var pettern = /^image/; console.log(fileData) if (!pettern.test(fileData.type)) { _this.$tool.message('图片格式不正确','error') return; } let formData = new FormData() formData.append("file", fileData) const res = await axios.post('/api/user/avatar', formData, { // 因为我们上传了图片,因此需要单独执行请求头的Content-Type headers: { // 表示上传的是文件,而不是普通的表单数据 'Content-Type': 'multipart/form-data' } }) if(res.data.code === 0){ _this.userInfo.avatar = res.data.data _this.setUserInfo({val: _this.userInfo}) _this.$tool.message('头像以上传','success') } } }
标签:vue,上传,formData,file,res,fileData,data,图片 From: https://www.cnblogs.com/tlfe/p/17237230.html