<!-- 上傳組件 --> <!-- 總結一下: action 寫圖片上傳請求的路徑 去路徑哈 show-file-list就是當你上傳時,是否會顯示出上傳的是哪一個圖片,一般為false handleAvatarSuccess它是成功的回調 beforeAvatarUpload:上傳之前做的一些事情
在本頁面中你不點擊按鈕 圖片也會顯示出來 element-ui中的上傳組件 在action時,寫了上傳地址,當你選擇好圖片,就自動幫你上傳了
<template>
<div>
<el-upload class="avatar-uploader" action="http://127.0.0.1:666/login/upload" :show-file-list="false" :on-success="handleAvatarSuccess" :before-upload="beforeAvatarUpload"
>
<img v-if="avatarUrl" :src="avatarUrl" class="avatar" />
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
//在本頁面中你不點擊按鈕 圖片也會顯示出來
<el-button @click="saveAvatar">獲取圖片請求</el-button>
<!-- 圖片回顯示 比如它回顯在頂部頭像,我放在這里是方便演示-->
<div class="avatar">
<img width="100%" height="100%" :src="avatarUrl" alt />
</div>
</div>
</template>
<script> export default { data() { return { avatarUrl: "http://127.0.0.1:8080/avatar.jpg" //默認頭像
}; }, methods: { // 上傳成功的函數
handleAvatarSuccess(res, file) { // 上傳成功 回顯圖片
this.avatarUrl = URL.createObjectURL(file.raw); console.log(URL.createObjectURL(file.raw)); }, // 上傳之前的限制函數
beforeAvatarUpload(file) { // 類型
const isJPG = file.type === "image/jpeg"; // 大小
const isLt2M = file.size / 1024 / 1024 < 2; // 類型限制
if (!isJPG) { this.$message.error("上傳頭像圖片只能是 JPG 格式!"); } // 大小限制
if (!isLt2M) { this.$message.error("上傳頭像圖片大小不能超過 2MB!"); } return isJPG && isLt2M; }, // 回去頭像的請求
getAvatar() { this.req .get("/login/getavatar") .then(response => { let data = response.data; this.avatarUrl =
"http://127.0.0.1:666" + data[data.length - 1].imgUrl; // console.log(data[data.length - 1].imgUrl);
}) .catch(err => { console.log(err); }); } }, created() { // 獲取頭像
this.getAvatar(); } }; </script>
<style lang="less" scoped> .avatar-uploader .el-upload { border: 1px dashed #d9d9d9; border-radius: 6px; cursor: pointer; position: relative; overflow: hidden; } .avatar-uploader .el-upload:hover { border-color: #409eff; } .avatar-uploader-icon { font-size: 28px; color: #8c939d; width: 178px; height: 178px; line-height: 178px; text-align: center; } .avatar { width: 178px; height: 178px; display: block; } </style>