曾经遇到一个需求,用户拍身份证上传验证,

然后我卡在了拍照这个点上。

最初采用的是微信的 api,wx.chooseImage,

但随后发现,返回的是一种只有微信才能预览的 url 格式,

但验证是要放在 PC 上进行的,等于保存了这个 url 也没法看呀。

然后详细看了遍文档,看上去好像是说可以先上传到微信然后就可以下载到本地了,

于是又带着吐槽启用了另两个微信 api,wx.uploadImage 和 wx.dowmloadImage。

万万没想到,结局是,chooseImage 获得 localIds 然后 uploadImage 得到 serverId,再 downloadImage 又变成了 localId。

思索了一下,也许这不是浏览器权限的问题,因此找上后端一起讨论这个问题。

才知,downloadImage 得后台人员去下,具体原因他也没说明白...

好吧,稀里糊涂算是走通了拍照和上传验证这个流程。

然而,正在我准备高兴一下的时刻,对桌的同事跟我说,

刚才试了下,好像 input[type="file"] 好像在手机上相片选择室会多一个拍照的按钮。

然后我试了一下,天了噜,心中有句 NMP 不知当讲不当讲,上面走微信 api 这条路又坑又麻烦好伐。

然而,正在我准备高兴一下的时刻,又一个同事跟我说,

刚才试了下,好像我的手机不行耶,

然后集中试了一圈,确实有部分手机只有选取图片没有拍照这个选项,比如小米3/华为mate7等。

拔凉拔凉的,web 标准是多么重要呀...

所以该项目只得还是选用了微信 api 这种方法,

小小庆幸一下客户群还好都是基于微信平台,不然还得改成 webapp 了。

而随着时间流逝,

最近在 github 上寻找苹果机兼容 getUserMedia 打开手机摄像头(用于做个假 AR)的办法。

一直无果所以向大佬汇报了一下,谁知之后他给我找来了一个 camera api

试了一下,其实是个打开拍照功能,但这样跳出了浏览器,没法加东西弄成 AR 呀。

但猛然想到,说不定能解决上次那个部分手机没法拍照的问题,就去看了下源码。

不禁百脸懵逼,一切的一切只因为 accept="image/*" 这个属性!

<input type="file">      <!-- 部分手机没有拍照选项 -->
<input type="file" accept="image/*"> <!-- 有了 -->

一时瞬间苍老,不禁莞尔,感觉岁月弄人,可能这就是程序员的一生吧。

然而!这个故事还没有完!!!

accept="image/*" 没法使用 fileReader,

只能用 window.URL 的 createObjectURL,

也就意味着,它返回的是个 blob 类型的 url,没法在其他页面预览了啊喂。

最后的最后,竟然还只能走微信 api 这条路了吗,好不甘心呀,有待继续寻找....

input 的案例

https://foreverz133.github.io/demos/single/input-file.html

微信的案例(当然你也只能在微信看到效果,代码在 common.js 里面第 310 行左右)

http://goldcard.kdcer.com/User/BindingProcessStep2

好了,走了很多弯路,与大家同勉进步,么么哒

input-file 部分手机不能拍照问题的更多相关文章

  1. input file禁用手机本地文件选择,只允许拍照上传图片

    <input type="file" accept="image/*" capture="camera"> 会有个问题,上传的图 ...

  2. h5 input file ajax实现文件上传

    <input type="file" accept="image/*" height="0" class="file_inp ...

  3. 亲测可用)html5 file调用手机摄像头

    在切图网一个客户的webapp项目中需要用到 html5调用手机摄像头,找了很多资料,大都是 js调用api  然后怎样怎样,做了几个demo测试发现根本不行, 后来恍然大悟,用html5自带的 in ...

  4. WebView中input file的解决方法

    public class MyWb extends Activity { /** Called when the activity is first created. */ WebView web; ...

  5. HTML中上传与读取图片或文件(input file)----在路上(25)

    input file相关知识简例 在此介绍的input file相关知识为: 上传照片及文件,其中包括单次上传.批量上传.删除照片.增加照片.读取图片.对上传的图片或文件的判断,比如限制图片的张数.限 ...

  6. Apache服务器网站访问伪静态内页出现No input file specified.的完美解决方案

    原文地址:Apache服务器网站访问伪静态内页出现No input file specified.的完美解决方案 启用REWRITE的伪静态功能的时候,首页可以访问,而访问内页的时候,就提示:&quo ...

  7. 编译安装mmseg提示cannot find input file: src/Makefile.in错误

    今天安装中文词检索功能模块 coreseek,其中一个分词模块 mmseg ,编译安装到最后,出现annot find input file: src/Makefile.in aclocal   // ...

  8. HTML5的 input:file上传类型控制

    一.input:file属性 属性值有以下几个比较常用: accept:表示可以选择的文件MIME类型,多个MIME类型用英文逗号分开,常用的MIME类型见下表. multiple:是否可以选择多个文 ...

  9. input file控件限制上传文件类型

    网页上添加一个input file HTML控件: <input id="File1" type="file" /> 默认是这样的,所有文件类型都会 ...

随机推荐

  1. 【vijos】1729 Knights(匈牙利)

    https://vijos.org/p/1729 这题好奇葩,为嘛N开到30就会re啊..........n<=26吗.... sad 因为根据棋子的分布,能攻击的一定各在一黑白格上,所以直接二 ...

  2. c#——表达式树在LINQ动态查询

    一般如果逻辑比较简单,只是存在有的情况多一个查询条件,有的情况不需要添加该查询条件 简单方式这样操作就可以了 public IQueryable<FileImport> DynamicCh ...

  3. 《C++程序设计》朝花夕拾

      (以后再也不用破Markdown写东西了,直到它有一个统一的标准,不然太乱了--) 函数签名 int f (int a, int b) ↑ ↑ ↑ ↑ 返回类型 函数名 形 式 参 数 其中,函数 ...

  4. django用户认证系统——登录4

    用户已经能够在我们的网站注册了,注册就是为了登录,接下来我们为用户提供登录功能.和注册不同的是,Django 已经为我们写好了登录功能的全部代码,我们不必像之前处理注册流程那样费劲了.只需几分钟的简单 ...

  5. 第七篇:两个经典的文件IO程序示例

    前言 本文分析两个经典的C++文件IO程序,提炼出其中文件IO的基本套路,留待日后查阅. 程序功能 程序一打印用户指定的所有文本文件,程序二向用户指定的所有文本文件中写入数据. 程序一代码及其注释 # ...

  6. angualar入门学习-- 自定义指令 认识属性

    个AngularJS指令在HTML代码中可以有四种表现形式: 1.作为一个新的HTML元素来使用 2.作为一个元素的属性来使用 3.作为一个元素的类来使用 4.作为注释来使用 一.创建指令 angul ...

  7. delphi ---ttoolbar,ttoolbutton

    1.button style:tbsButton,tbsCheck,tbsDivider,tbsDropDown,tbsSeparator,tbsTextButton tbsButton:普通的控件 ...

  8. MYSQ无法启动

    http://bbs.51cto.com/thread-433491-1.html http://www.linuxdiyf.com/viewarticle.php?id=97065 http://b ...

  9. z waiting to receive.**B0100000023be50

    [root@b ~]# rz▒z waiting to receive.**B0100000023be50

  10. Python菜鸟之路:Django 信号

    Django中提供了“信号调度”,用于在框架执行操作时解耦.通俗来讲,就是一些动作发生的时候,信号允许特定的发送者去提醒一些接受者. 相当于我们创建了一个hook. 1. Django的内置信号 Mo ...