javascript - antd upload组件的beforeupload的支持返回值的问题
黄舟
黄舟 2017-04-11 12:20:28
[JavaScript讨论组]

我现在需要写一个方法,通过判断图片的长度和文件size来返回true或者false

console.log('file want upload ', file);
    let reader = new FileReader();
    reader.readAsDataURL(file);
    if (file.size > 1024*1024*3) { // 大于3M
      message.error('您上传的图片过大!请重新上传');
      return false;
    }
    let img = new Image();
    return (function () {
      let flag: boolean=true;
      ((flag) => {
        reader.onloadend = function(evt){
          img.src    = this.result;
          let width  = img.width;
          let height = img.height;
          console.log(width);
          console.log(height);
          if (width < 2000 && height < 2000) {
            flag = true;
          } else {
            flag = false
          }
        }
      })(flag)
      return flag;
    })()

但是这个很明显函数会先返回..所以onloadend里面修改flag的值实际上是无效的,我该怎样处理才能实现在onloadend之后再让外层函数返回结果呢?

========update========
正是因为upload组件的beforeUpload在return promise时直接判为false..所以才无法实现这个效果..能够改进?

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(3)
PHPz

setTimeOut?

天蓬老师

引入异步流程控制啊。。promise什么的

怪我咯

应该是无法实现的。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号