五分钟带你了解获取el-upload上传图片的宽高

本文介绍如何在前端使用FileReader和Image对象获取上传图片的宽高信息,并实现尺寸限制,适合对前端文件上传处理感兴趣的开发者。

接到一个新要求:需要获取上传图片的尺寸等一些信息,并对上传元素进行一些限制。
话不多说直接开撸!

思路

上传图片完成后,会获取到文件的基本信息。通过构造函数FilerReader将其转换成Base64。通过Image对象获取图片的宽高,下一步按照需求进行必要判断。

实操

html部分

<el-upload
  action=""
  :http-request="uploadFile"
  :show-file-list="false"
  :disabled="loading"
>
  <el-button :loading="loading" plain icon="el-icon-upload2">
    上传
  </el-button>
</el-upload>

script部分

uploadFile(file) {
   // 定义 filereader对象
   let reader = new FileReader()
   reader.readAsDataUrl(file.file)
   reader.onload = e=>{
       const img = e.target.result;
       const image = new Image()
       image.src=img
       
       image.onload = _=>{
           let width = image.width
           let height= image.height
           
           // 然后就可以做需要的操作了
       }
   }
   
}

最后的话

如果你喜欢我的小作文,请关注我


作者:幼儿园老大
链接:https://juejin.cn/post/7091894484123779085
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

在使用 `el-upload` 组件上传图片时,如果需要获取图片度和度信息,可以结合原生 JavaScript 的 `Image` 对象来实现。 ### 具体步骤 1. **监听文件变化** 使用 `beforeUpload` 或者自定义事件,在用户选择文件后拦截并处理文件内容。 2. **读取文件数据** 利用 `FileReader` 将选中的文件转为 Base64 编码字符串或其他格式。 3. **创建 Image 对象加载图片** 创建一个新的 `Image` 实例,并将 Base64 数据设置为其 `src` 属性。当图片加载完成后,可以从其属性中直接获取度 (`width`) 和度 (`height`)。 #### 示例代码 ```vue <template> <el-upload action="#" :before-upload="handleBeforeUpload"> <el-button type="primary">点击上传</el-button> </el-upload> </template> <script> export default { methods: { handleBeforeUpload(file) { const reader = new FileReader(); // 监听reader完成事件 reader.onload = (e) => { const img = new Image(); img.src = e.target.result; // 设置Base64编码结果作为图片源 // 图片加载完成后回调 img.onload = () => { console.log('图片度:', img.width); console.log('图片度:', img.height); if (img.width > 800 || img.height > 600) { this.$message.warning('图片尺寸过大'); } }; }; reader.readAsDataURL(file); // 开始读取文件转换成dataURL return false; }, }, }; </script> ``` 在这个示例中,我们通过以下流程实现了对图片的检测: - 用户选择了文件之后会触发 `beforeUpload` 钩子; - 文件被传递给 `FileReader` 进行异步解析; -图片成功加载后即可从 `Image` 实例中提取出度和度的数据。 ### 注意事项 - 如果只希望验证大小而不实际上传文件,则记得返回 `false` 来阻止默认提交动作。 - 要考虑浏览器兼容性和性能影响,尤其是对于大文件操作时可能会导致页面卡顿等问题。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值