php+vant van-uploader手机拍照 上传

news/2024/9/24 3:17:25/

在这里插入图片描述
在这里插入图片描述
设置capture=”user”,则只会调起摄像头;
不设置capture=“user”,则会弹窗让选择相册或拍照。

HTML:

  <link rel="stylesheet" href="/vue/vant.css"><van-field name="uploader" label="照片"><template #input><van-uploader :after-read="saveImage" v-model="fileList" capture="user" :max-count="1"/></template></van-field>

JS部分:

<script src="/js/lrz/lrz.bundle.js"></script>
<script src="/eslydsj/js/layer_v2.1/layer/layer.js"></script>
<script src="/vue/vant.js"></script>
<script> return {fileList: [],}methods: {saveImage(file){var that = this;console.log('文件读取成功后的处理');console.log(file);$.showPreloader('图片上传中');lrz(file.file).then(function (rst) {var _token = '{{csrf_token()}}';rst.formData.append('base64img', rst.base64);rst.formData.append('_token', _token);$.ajax({url:"/eq/saveImage",type: 'POST',dataType: 'json',data: rst.formData,processData: false,contentType: false,xhrFields: { withCredentials: true },headers: {'Access-Control-Allow-Origin': '*','Access-Control-Allow-Credentials': 'true'},success: function(res){that.url = res.images;$.alert('上传成功');$.hidePreloader();},error: function(){$.alert('上传失败');$.hidePreloader();}});}).catch(function (err) {$.alert('上传失败');});},}
</script>    ///图片上传到服务器 /public/uploads/tmp/下```phppublic function saveImage(Request $request){$tmp = $request->get('base64img');if (!empty($tmp)){$path = '/uploads';$img = '';/* 根据base64编码获取图片类型 */if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $tmp, $result)) {$image_type = $result[2];$output_file = 'tmp/'.date('Y-m-d') .'/'. uniqid() . '.' . $image_type;$image_binary = base64_decode(str_replace($result[1], '', $tmp));Storage::disk('admin')->put($output_file, $image_binary); //存储文件$img = $path.'/'.$output_file;}}else{$img = '';}return response()->json(['status' => 100 , 'message' => '上传完成' , 'images' => $img]);}

笔记:
HTML属性capture是否启用用户的前置或后置摄像头和/或麦克风

capture属性放input file文件上传控件上,可以给它一个值“user”或“environment”。user启用用户的后置摄像头和/或麦克风,environment启用用户的前置摄像头和/或麦克风。

<p><label for="soundFile">What does your voice sound like?:</label><input type="file" id="soundFile" capture="user" accept="audio/*" />
</p>
<p><label for="videoFile">Upload a video:</label><input type="file" id="videoFile" capture="environment" accept="video/*" />
</p>
<p><label for="imageFile">Upload a photo of yourself:</label><input type="file" id="imageFile" capture="user" accept="image/*" />
</p> 

http://www.ppmy.cn/news/1462101.html

相关文章

《Python编程从入门到实践》day29

# 昨日知识点回顾 修改折线图文字和线条粗细 矫正图形 使用内置格式 # 今日知识点学习 15.2.4 使用scatter()绘制散点图并设置样式 import matplotlib.pyplot as plt import matplotlib matplotlib.use(TkAgg)plt.style.use(seaborn-v0_8) # 使用内置格式 fig, ax plt.subpl…

基于Hadoop的课程诊改大数据可视化分析研究与应用

基于Hadoop的课程诊改大数据可视化分析研究与应用 “A Study and Application of Big Data Visualization Analysis for Course Diagnosis and Improvement based on Hadoop” 完整下载链接:基于Hadoop的课程诊改大数据可视化分析研究与应用 文章目录 基于Hadoop的课程诊改大…

jenkins连接ubuntu普通用户节点

1.创建credentials 2.创建node 3.在jenkins服务器还需要进行的操作&#xff08;jenkins服务器中&#xff09; mkdir /var/lib/jenkins/.ssh ssh-keyscan -H 192.168.110.204 >> /var/lib/jenkins/.ssh/known_hosts chown -R jenkins:jenkins /var/lib/jenkins/.ssh/ 4.…

超声波清洗机哪家好一点?四款超一流超声波清洗机大盘点

在追求极致清洁和维护精密工具、设备及珍贵物品的时代&#xff0c;超声波清洗机显得尤为重要。不仅因其高效、快速的清洁效果&#xff0c;更因其能够触及传统手工清洁所不能及的微小缝隙。无论你是珠宝设计师、机械工程师、还是热爱生活的普通家庭用户&#xff0c;超声波清洗机…

Android MediaCodec 简明教程(七):使用 MediaCodec 解码到 OES 纹理上

系列文章目录 Android MediaCodec 简明教程&#xff08;一&#xff09;&#xff1a;使用 MediaCodecList 查询 Codec 信息&#xff0c;并创建 MediaCodec 编解码器Android MediaCodec 简明教程&#xff08;二&#xff09;&#xff1a;使用 MediaCodecInfo.CodecCapabilities 查…

OpenCLkernel编程注意事项

浮点值计算时&#xff0c;需要用f前缀(表示float)的数学函数&#xff0c;例如fmax、fmin、fabs等。

【Python】语句与众所周知【自我维护版】

各位大佬好 &#xff0c;这里是阿川的博客 &#xff0c; 祝您变得更强 个人主页&#xff1a;在线OJ的阿川 大佬的支持和鼓励&#xff0c;将是我成长路上最大的动力 阿川水平有限&#xff0c;如有错误&#xff0c;欢迎大佬指正 本篇博客是在之前的基础上进行的维护 目录 条…

石墨烯材料商汉烯科技授权世强硬创,代理产品具备高导热/导电特点

近日&#xff0c;武汉汉烯科技有限公司&#xff08;下称“汉烯科技”&#xff0c;英文&#xff1a;HANXI TECH&#xff09;与世强先进&#xff08;深圳&#xff09;科技股份有限公司&#xff08;下称“世强先进”&#xff09;达成授权代理合作&#xff0c;面向锂电新能源、电子…