我正在尝试使用vue和laravel进行简单的用户头像更新,我无法弄清楚我在这里做错了什么。
我有一个带有此表单和此脚本的vue组件:
<form @submit.prevent="updateAvatar" action="#" method="POST" enctype="multipart/form-data">
<div class="form-group">
<label name="task-title">Incarca poza:</label>
<input @change="newAvatar" id="avatar" type="file" name="avatar">
</div>
<button type="submit" class="btn btn-primary general-task-btn">Actualizeaza</button>
</form>
<script>
export default{
props: ['userid'],
data(){
return{
avatar: {
}
}
},
methods: {
newAvatar(event) {
let files = event.target.files;
if (files.length) this.avatar = files[0];
},
updateAvatar: function () {
let data = new FormData();
data.append('file', this.avatar);
axios.put('/api/user/updateAvatar', data)
.then(res => {
console.log(res);
})
.catch(error => console.log(error));
// window.location.href = "/profile";
}
}
}
控制器功能:
public function updateAvatar(Request $request)
{
$user = Auth::user();
$avatar = $request->file('file');
$filename = time() . '.' . $avatar->getClientOriginalExtension();
Image::make($avatar)->save( public_path('/uploads/avatars' . $filename) );
$user->avatar = $filename;
$user->save();
}
我真正不知道的是如何访问我使用axios发送的formData。服务器告诉我这是空的。 在发出put请求之前我尝试了console.log formData,但即使内容在avatar对象中,我也得到一个空的obj。当我在线阅读时,您无法看到formData的内容,因此我无法确定数据是否正确发送。 也许你们可以为我说清楚。