1.template
<el-form-item label="图片">
<div class="image-upload-container">
<input type="file" id="imageUpload" class="image-upload" @change="convertToBase64" />
<label for="imageUpload" class="image-upload-label">选择图片</label>
<div class="image-preview">
<img v-if="form.ilImgPath" :src="form.ilImgPath" alt="预览图片" class="preview-image" />
</div>
</div>
</el-form-item>
2.methods
/**
* 转base64
* @param {*} event 图片文件选中信息
*/
convertToBase64(event) {
const file = event.target.files[0];
console.log(file);
if (file && file.size / 1024 / 1024 < 0.9) {
const reader = new FileReader();
reader.onload = (e) => {
this.form.ilImgPath = e.target.result;
};
reader.readAsDataURL(file);
} else {
this.$message.error("请正确选择图片!或选择大小小于900KB的图片");
}
},
3.style
<style>
.image-upload-container {
display: flex;
flex-direction: column;
align-items: center;
margin-bottom: 20px; /* 根据需要调整 */
}
.image-upload {
display: none; /* 隐藏原生的文件选择框 */
cursor: pointer; /* 仍然保持可点击的视觉效果 */
}
.image-upload-label {
display: inline-block;
padding: 8px 16px;
background-color: #f2f2f2;
border: 1px solid #ccc;
border-radius: 4px;
cursor: pointer;
transition: background-color 0.3s ease;
}
.image-upload-label:hover {
background-color: #e6e6e6;
}
.image-preview {
margin-top: 10px; /* 根据需要调整 */
text-align: center; /* 图片居中显示 */
}
.preview-image {
max-width: 100%; /* 图片最大宽度为容器宽度 */
height: auto; /* 图片高度自动以适应宽度 */
border-radius: 4px; /* 圆角边框 */
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); /* 阴影效果 */
}
</style>
示例:
上传文件转base64.html【免费】