一开始我直接百度google,发现都没有这个问题,这应该是一个很常见的需求啊,element 为啥没有实现呢,也许是很简单吧,网上竟然没有此类问题,我到GitHub的issue里看,确实有类似的问题,但没有系统的解决方法,凉凉。
经过反复的debugger发现img.onload压根不走,isSize始终是false,看来这种模仿的方法显然是行不通的,想到onload是异步的,来不及走就return结束了这个方法,所以想法async一下,让onload之后再执行isSize的判断以及return,于是有了下面的方法。
现在isSize确实被重新赋值了,有了正确的提示,但只是一闪而过,并成功的上传了,很郁闷,一步步的开始debugger了,发现最后还是可以回到return的,但是不知道啥原因,接着又开始google了,发现我的思路是错的。
仔细看了下掘金上的这篇文章,发现upload人家内部确实是想要一个promise,你直接给isSize一个boolean值,最后return出去其实是没有任何作用的,这就解释了为何可以弹出错误信息却可以成功上传了,这个是开始的实现方法。
我想这应该没问题了吧,该有的都有了,最后还是利用isSize来确定是否成功检验,发现和上次的情况一样,没有质的改变,错误信息还是一闪而过并可以成功上传,这下有点慌了,看来没弄明白为啥需要promise而胡乱的改造,终究解决不了问题,没有get到人家真正的实现方法,于是看下源码吧,一看才有点儿眉目。
这才发现this.beforeUpload是一个真正的promise,你给人家必须返回一个promise,简单的boolean值是没用的,因为人家内部还有很多的对promise的实现,这下清楚了一点,就顺水推舟的有了最终的方法,经过多样测试,的确可以。
看了最终版的代码发现确实也很简单,我们往往被固有的思维带入歧途,好在有伟大的google,总是可以悬崖勒马,让我们浪子回头,其实还是自己的功力不深啊,以后多注重基础,多挖掘细节,以小见大,修炼内功!
相信有人还会遇到这个问题,希望可以帮助大家,减少不必要的挣扎,记住午饭还是要吃的!
到此这篇若依文件上传从后端限制文件类型(若依文件上传从后端限制文件类型是什么)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/bcyy/69384.html