使用el-upload图片上传校验图片的width与height

本文介绍如何使用el-upload组件进行图片上传前的尺寸校验,确保上传的图片符合特定的宽度与高度要求,同时检查图片格式和大小,提供详细的代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用el-upload图片上传校验图片的width与height

在这里插入图片描述

在这里插入图片描述

<el-upload
                                    class="avatar-uploader"
                                    ref="haiRef"
                                    :action="uploadHaiPic"
                                    :show-file-list="false"
                                    :on-success="handleAvatarSuccess"
                                    :before-upload="beforeAvatarUpload"
                                    :headers="headerObj">
                                <div slot="trigger" class="upload-pic" v-if="teachObj.poster">
                                    <img class="delete-icon" @click.stop="handleRemoveHai" :src="deleteIcon" />
                                    <img  :src="teachObj.poster" class="avatar-img">
                                </div>

                                <!-- :on-change="handleImageChange" -->
                                <div slot="trigger" class="upload-btn" v-else>
                                    <i class="el-icon-plus"></i>
                                    <div>图片上传格式为jpg , gif , png , jpeg ,图片尺
                                        寸限制为600*480,限制大小为5M。</div>
                                </div>
                            </el-upload>
beforeAvatarUpload(file){
           
            const isJPG =
                file.type === 'image/jpeg' ||
                'image/jpg' ||
                'image/gif' ||
                'image/png';
            const isLt5M = file.size / 1024 / 1024 < 5;
            if (!isJPG) {
                this.$message.error(
                    '上传头像图片只能是 JPG、JPEG、GIF或PNG 格式!'
                );
            }
            if (!isLt5M) {
                this.$message.error('上传头像图片大小不能超过 5MB!');
            }
            // 上传图片前处理函数
            const isSize = new Promise(function(resolve, reject) {
                let width = 600;
                let height = 480;
                let _URL = window.URL || window.webkitURL;
                let image = new Image();
                image.onload = function() {
                    let valid = image.width <= width && image.height <= height;
                    valid ? resolve() : reject();
                };
                image.src = _URL.createObjectURL(file);
            }).then(
                () => {
                    return file;
                },
                () => {
                    this.$message.error("上传宣讲海报图片尺寸不符合,只能是600*480!");
                    return Promise.reject();
                }
            );

            return isJPG && isLt5M && isSize;
        },
### 使用 `el-upload` 组件校验上传图片比为 1:1 为了确保上传图片具有特定的比例(例如1:1),可以在前端使用 JavaScript 来读取并验证图像尺寸。具体来说,在 `el-upload` 的 `before-upload` 钩子函数中加入逻辑来检查图片度和是否相等。 #### HTML 结构 ```html <template> <div> <!-- 设置自定义属性用于传递额外参数 --> <el-upload action="/your/upload/endpoint" :before-upload="handleBeforeUpload" list-type="picture-card" :on-preview="handlePictureCardPreview" :on-remove="handleRemove"> <i class="el-icon-plus"></i> </el-upload> <el-dialog :visible.sync="dialogVisible"> <img width="100%" :src="dialogImageUrl" alt=""> </el-dialog> </div> </template> ``` #### Vue 方法实现 在方法部分添加处理程序,特别是针对 `before-upload` 进行增强: ```javascript export default { data() { return { dialogImageUrl: '', dialogVisible: false, }; }, methods: { handleRemove(file, fileList) {}, handlePictureCardPreview(file) { this.dialogImageUrl = file.url; this.dialogVisible = true; }, async handleBeforeUpload(file) { const isImageValid = await validateImageDimensions(file); if (!isImageValid) { ElMessage.error('仅支持正方形图片'); return false; // 返回false阻止继续上传流程 } return true; } } } // 辅助函数:异步加载图片获取其真实尺寸 function validateImageDimensions(file) { return new Promise((resolve) => { let img = new Image(); img.onload = function () { resolve(img.width === img.height); // 判断等于返回true/false }; img.onerror = function () { resolve(false); } img.src = URL.createObjectURL(file); }); } ``` 上述代码展示了如何利用 `el-upload` 提供的各种钩子以及辅助函数完成对上传图片的检验工作[^1]。当用户尝试上传不符合条件的照片时会收到提示信息,并且该照片不会被提交给服务器[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值