input上传图片安卓机无法选择相机

2023-10-25 19:10

本文主要是介绍input上传图片安卓机无法选择相机,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

input上传图片安卓机无法选择相机

    • 一、问题描述:
    • 二、解决方案:
    • 三、补充

一、问题描述:

遇到的问题,公众号网页内上传图片到服务器,使用以下代码上传图片。

<input type="file" accept="image/*"  class='img_oa' />

发现A手机点击上传的时候可以选择打开文件选择图片上传,或者选择打开相机拍照上传,但是B手机只能打开文件选择,不能打开相机。网上有人说给input加上属性 capture=‘camera’ 就可以选择相机了,但是加上这个属性后A手机只能打开相机用相机拍摄上传而不能打开文件选择图片了,如何做到所有手机都可以选择文件里的图片或选择相机拍摄呢。

二、解决方案:

使用js获取手机型号,给那些不能选择相机的手机加上 capture=‘camera’这个属性,能打开的就不管他。获取手机型号需要引入js插件 mobile-detect.js
代码如下:

<script src="__JS__/mobile-detect.js"></script><!--获取手机型号插件-->
<script>  //判断数组中是否包含某字符串  Array.prototype.contains = function(needle) {  for (i in this) {  if (this[i].indexOf(needle) > 0)  return i;  }  return -1;  }  var device_type = navigator.userAgent;//获取userAgent信息  //document.write(device_type);//打印到页面  var md = new MobileDetect(device_type);//初始化mobile-detect  var os = md.os(); var model = ""; if (os == "iOS") {os = md.os() + md.version("iPhone");  model = md.mobile();  } else if (os == "AndroidOS") {os = md.os() + md.version("Android");  var sss = device_type.split(";");var i = sss.contains("Build/");  if (i > -1) {  model = sss[i].substring(0, sss[i].indexOf("Build/"));  //获取到的手机型号}}alert(model);//这里记录不能打开相机的手机型号,当当前手机型号包含在里面的时候给input添加 capture=‘camera’ 属性var str = "TAS-AN00 JKM-AL00b SM-G9700";var mm = model.replace(/(^\s*)|(\s*$)/g, "");//去除空格var reg = RegExp(mm);if(reg.exec(str)){$('.img_add').attr('capture','camera');}
</script>

每个手机的型号可以在手机设置里面,关于手机那里看到。如图:
在这里插入图片描述
以上两个型号的手机都是只能选择文件不能打开相机的手机,我们只要把他的型号放到代码 str 变量里面就行了,发现是这个型号的手机我们就给input添加 capture=‘camera’ 的属性。这样就可以实现所有手机可以选择文件里的图片,也可以打开相机拍摄上传了。
这里只对安卓机做了处理,ios暂时没有发现存在这个问题

三、补充

实现完功能后我觉得这个问题的根本在于手机底层浏览器的内核不一样。不然不用判断机型,判断内核会更好,因为机型实在太多,找不全,要是是内核的原因的话就好办多了。获取手机浏览器内核的方式是,用手机自带的浏览器打开链接 :http://ie.icoa.cn 结果如图:
在这里插入图片描述
查看了一个iphone和几个安卓手机,不管手机能不能调起相机,他们的浏览器内核都是webkit,只是版本不太一样,所以也不好从浏览器内核处理,可能决定因素不是这个内核吧,我也没有太搞清楚😓。

webkit是由苹果公司通过开源的KHTML改进而来的,最后开发出了著名的 Safari , Safari 是一个相当成功的产品,但是 Safari 却不是开放源代码的。

欢迎各位大佬留言讨论

这篇关于input上传图片安卓机无法选择相机的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/284610

相关文章

Python中Tensorflow无法调用GPU问题的解决方法

《Python中Tensorflow无法调用GPU问题的解决方法》文章详解如何解决TensorFlow在Windows无法识别GPU的问题,需降级至2.10版本,安装匹配CUDA11.2和cuDNN... 当用以下代码查看GPU数量时,gpuspython返回的是一个空列表,说明tensorflow没有找到

利用Python脚本实现批量将图片转换为WebP格式

《利用Python脚本实现批量将图片转换为WebP格式》Python语言的简洁语法和库支持使其成为图像处理的理想选择,本文将介绍如何利用Python实现批量将图片转换为WebP格式的脚本,WebP作为... 目录简介1. python在图像处理中的应用2. WebP格式的原理和优势2.1 WebP格式与传统

HTML input 标签示例详解

《HTMLinput标签示例详解》input标签主要用于接收用户的输入,随type属性值的不同,变换其具体功能,本文通过实例图文并茂的形式给大家介绍HTMLinput标签,感兴趣的朋友一... 目录通用属性输入框单行文本输入框 text密码输入框 password数字输入框 number电子邮件输入编程框

基于 HTML5 Canvas 实现图片旋转与下载功能(完整代码展示)

《基于HTML5Canvas实现图片旋转与下载功能(完整代码展示)》本文将深入剖析一段基于HTML5Canvas的代码,该代码实现了图片的旋转(90度和180度)以及旋转后图片的下载... 目录一、引言二、html 结构分析三、css 样式分析四、JavaScript 功能实现一、引言在 Web 开发中,

Python如何去除图片干扰代码示例

《Python如何去除图片干扰代码示例》图片降噪是一个广泛应用于图像处理的技术,可以提高图像质量和相关应用的效果,:本文主要介绍Python如何去除图片干扰的相关资料,文中通过代码介绍的非常详细,... 目录一、噪声去除1. 高斯噪声(像素值正态分布扰动)2. 椒盐噪声(随机黑白像素点)3. 复杂噪声(如伪

Python中图片与PDF识别文本(OCR)的全面指南

《Python中图片与PDF识别文本(OCR)的全面指南》在数据爆炸时代,80%的企业数据以非结构化形式存在,其中PDF和图像是最主要的载体,本文将深入探索Python中OCR技术如何将这些数字纸张转... 目录一、OCR技术核心原理二、python图像识别四大工具库1. Pytesseract - 经典O

Python实现精准提取 PDF中的文本,表格与图片

《Python实现精准提取PDF中的文本,表格与图片》在实际的系统开发中,处理PDF文件不仅限于读取整页文本,还有提取文档中的表格数据,图片或特定区域的内容,下面我们来看看如何使用Python实... 目录安装 python 库提取 PDF 文本内容:获取整页文本与指定区域内容获取页面上的所有文本内容获取

Python基于微信OCR引擎实现高效图片文字识别

《Python基于微信OCR引擎实现高效图片文字识别》这篇文章主要为大家详细介绍了一款基于微信OCR引擎的图片文字识别桌面应用开发全过程,可以实现从图片拖拽识别到文字提取,感兴趣的小伙伴可以跟随小编一... 目录一、项目概述1.1 开发背景1.2 技术选型1.3 核心优势二、功能详解2.1 核心功能模块2.

Go语言如何判断两张图片的相似度

《Go语言如何判断两张图片的相似度》这篇文章主要为大家详细介绍了Go语言如何中实现判断两张图片的相似度的两种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 在介绍技术细节前,我们先来看看图片对比在哪些场景下可以用得到:图片去重:自动删除重复图片,为存储空间"瘦身"。想象你是一个

Oracle修改端口号之后无法启动的解决方案

《Oracle修改端口号之后无法启动的解决方案》Oracle数据库更改端口后出现监听器无法启动的问题确实较为常见,但并非必然发生,这一问题通常源于​​配置错误或环境冲突​​,而非端口修改本身,以下是系... 目录一、问题根源分析​​​二、保姆级解决方案​​​​步骤1:修正监听器配置文件 (listener.