input:file如何获取手机上的网络图片路径?
在微信内置浏览器打开一个h5页面,页面上有一个上传图片的功能按钮,点击上传时发现无法获取图片(这里的上传图片用的是PhotoClip这个插件)。然后我各种调试,在调试的时候我有发现并不是所有图片都无法上传,最后我发现原来是我手机内有些图片是正常的带有图片文件后缀的,有些图片是下载的一些网络图片,没有图片文件后缀,例如://——123456.downloading这样的路径(我....),然后在PhotoClip插件中有一个判断选中的文件是否为图片文件的判断:
if (!/image\/\w+/.test(files.type)) {
alert("图片格式不正确,请选择正确格式的图片文件!");
return false;
} else {
//...
}
这里就又掉进一个坑了——微信内置浏览器中,alert弹框被它给禁止了,也就是说仅管插件弹出警告了,但是由于这个坑爹的机制导致用户在选中这类网络图片的时候回发现无法裁剪上传——既没有提示信息,又没有选中的图片显示,感觉就是失效了...
没办法,,问题出了,还是得想办法解决,我目前只有一个思路:仿写一个toast提示框,提示用户重新选择。但有一个问题就是,万一用户非要较真:我这明明就是一张正常的图片,你为啥不让我上传?妈的什么破项目,抬走...
有没有前辈,指点个更靠谱点的方法咯
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
accept
控制上传后缀File
继承的是Blob
所以你只需要改blob
的type
然后重新new File
就能当图片处理。这个问题目前找到解决方法了(并不完美):
把input的 accept="image/"属性去掉,把插件内的修改accept="image/"的表达式去掉,即默认为上传所有格式的文件!这样才能够进入插件内的判断语句,才会有一个alert交互;
另外更正一下:
这里真的魔性,你规定了accept="image/*",当你上次其他格式的文件的时候,input的change事件无法正常监听...