摄像头上传文件服务器失败,vue打开摄像头拍照并上传至服务器
getCompetence() {
var _this = this
this.thisCancas = document.getElementById(‘canvasCamera‘)
this.thisContext = this.thisCancas.getContext(‘2d‘)
this.thisVideo = document.getElementById(‘videoCamera‘)
// 旧版本浏览器可能根本不支持mediaDevices,我们首先设置一个空对象
if (navigator.mediaDevices === undefined) {
navigator.mediaDevices = {}
}
// 一些浏览器实现了部分mediaDevices,我们不能只分配一个对象
// 使用getUserMedia,因为它会覆盖现有的属性。
// 这里,如果缺少getUserMedia属性,就添加它。
if (navigator.mediaDevices.getUserMedia === undefined) {
navigator.mediaDevices.getUserMedia = function(constraints) {
// 首先获取现存的getUserMedia(如果存在)
var getUserMedia =
navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia ||
navigator.getUserMedia
// 有些浏览器不支持,会返回错误信息
// 保持接口一致
if (!getUserMedia) {
return Promise.reject(new Error(‘getUserMedia is not implemented in this browser‘))
}
// 否则,使用Promise将调用包装到旧的navigator.getUserMedia
return new Promise(function(resolve, reject) {
getUserMedia.call(navigator, constraints, resolve, reject)
})
}
}
var constraints = {
audio: false,
video: {
width: this.videoWidth,
height: this.videoHeight,
transform: ‘scaleX(-1)‘
}
}
navigator.mediaDevices
.getUserMedia(constraints)
.then(function(stream) {
// 旧的浏览器可能没有srcObject
if (‘srcObject‘ in _this.thisVideo) {
_this.thisVideo.srcObject = stream
} else {
// 避免在新的浏览器中使用它,因为它正在被弃用。
_this.thisVideo.src = window.URL.createObjectURL(stream)
}
_this.thisVideo.onloadedmetadata = function(e) {
_this.thisVideo.play()
}
})
.catch((err) => {
console.log(err)
})
},
// 绘制图片(拍照功能)
setImage() {
var _this = this
// 点击,canvas画图
_this.thisContext.drawImage(_this.thisVideo,0,0,_this.videoWidth,_this.videoHeight)
// 获取图片base64链接
var image = this.thisCancas.toDataURL(‘image/png‘)
_this.imgSrc = image
this.onUpload()
// _this.fileList = [{ name: ‘food.jpg‘, url: image }]
// this.$refs.upload.submit()
this.$emit(‘refreshDataList‘, this.imgSrc)
},
onUpload() {
if (this.imgSrc) {
const file = this.imgSrc // 把整个base64给file
const time = (new Date()).valueOf()// 生成时间戳
const name = time + ‘.png‘ // 定义文件名字(例如:abc.png , cover.png)
const conversions = this.dataURLtoFile(file, name) // 调用base64转图片方法
const data = new FormData()
data.append(‘file‘, conversions)
const options = {
method: ‘POST‘, // 请求方法
body: data, // 请求体
headers: this.headers
}
this.loading = true
fetch(‘http://47.99.204.99:8000/api/workerEntryExit/uploadAvatar‘, options)
.then((response) => {
return response.json()
})
.then((responseText) => {
this.fileList = [{ name: ‘人脸采集‘, url: responseText.avatar }]
this.form.issueCardPic = responseText.avatar
})
.catch((error) => {
this.loading = false
this.$notify.error({
title: ‘上传失败‘,
message: error.msg
})
})
} else {
this.$notify({
title: ‘警告‘,
message: ‘请点击拍照‘,
type: ‘warning‘
})
}
},
// base64转文件
dataURLtoFile(dataurl, filename) {
var arr = dataurl.split(‘,‘)
var mime = arr[0].match(/:(.*?);/)[1]
var bstr = atob(arr[1])
var n = bstr.length
var u8arr = new Uint8Array(n)
while (n--) {
u8arr[n] = bstr.charCodeAt(n)
}
return new File([u8arr], filename, { type: mime })
},
// 关闭摄像头
stopNavigator() {
this.thisVideo.srcObject.getTracks()[0].stop()
}
}
}
摄像头上传文件服务器失败,vue打开摄像头拍照并上传至服务器相关推荐
- JS打开摄像头并截图上传
直入正题,JS打开摄像头并截图上传至后端的一个完整步骤 1. 打开摄像头主要用到getUserMedia方法,然后将获取到的媒体流置入video标签 2. 截取图片主要用到canvas绘图,使用dra ...
- 摄像头网页服务器,js调用本地摄像头拍照并上传到web服务器
[实例简介] js调用本地摄像头拍照并上传到web服务器.后台使用java实现图片的接收和存储,上传的图片默认保存到项目下的images文件夹中. [实例截图] [核心代码] MyCamera └── ...
- vue 文件及描述信息一起上传_用Vue实现一个大文件上传和断点续传
前言 这段时间面试官都挺忙的,频频出现在博客文章标题,虽然我不是特别想蹭热度,但是实在想不到好的标题了-.-,蹭蹭就蹭蹭 :) 事实上我在面试的时候确实被问到了这个问题,而且是一道在线 coding ...
- php上传文件失败的原因,PHP图片文件上传失败的原因
PHP中调用move_upload_file函数时提示上传失败 form.html如下: 文件上传 文件名: upload_file.php如下: //允许上传的图片后缀 $allowedExts = ...
- web调用摄像头拍照并上传到服务器
1.注意事项 1.网页对摄像头调用的限制比较高,要求网页必须https协议或者是要本地localhost(127.0.0.1)否则无法调用, 2.当你的网页协议是https请求的时候你向后端服务器发的 ...
- antd vue表单上传文件_AntDesign vue学习笔记-自定义文件上传
上传文件时实际可能需要传输一个token. 方法一: 1.查看vue antdesign文档 https://vue.ant.design/components/upload-cn/ 2.使用cust ...
- antd 上传进度_antd vue upload组件使用customRequest上传文件显示文件上传进度
antd-vue上传文件upload组件使用自定义上传方法customRequest无法显示文件上传进度条,如下图红框内的进度条无法显示当前文件上传进度 于是,在网上搜索解决方案: 第一种解决方案是自 ...
- vue实现大文件分片上传断点续传并展示上传进度条
最近有一个上传视频到服务器的功能,然后发现视频太大了,比如1个G的视频文件基本都是上传失败的,我之前都是上传阿里云的,所以面对大文件上传服务器就做了分片上传和断点续传. 首先解释什么是分片上传:比如一 ...
- elementui图片上传php,vue+element-ui+富文本————图片上传
最近用vue+element-ui开发一套后台管理系统,其中项目中需要用到富文本编辑器,这里总结下开发过程中遇到的坑和使用方法. 刚开始用的是vue-quill-editor结合element-ui上 ...
最新文章
- ES5 数组方法forEach
- Git常用命令和Git团队使用规范指南
- 为ActiveX制作数字签名 -- 介绍 (引)
- 菜鸟超级进口大仓618首度亮相!跨境商品也能当日次日达
- 分享一个基于jQuery,backbone.js和underscore.js的消息提示框架 - Backbone.Notifier
- mysql怎么禁止远程连接_mysql如何设置禁止远程连接
- php自动关闭页面代码,自动生成伪静态页面代码(简易版)
- Python3爬虫入门之Urllib库的用法
- 通读SLA文档之后的感受
- Unity全局音量控制
- Promise、then()、catch()详解
- 苹果app商品定价_苹果将调整应用商店定价:中国区应用最低价涨至8元
- 学前端到底哪个培训机构好?
- Gold的共价对接操作流程与Moe结合处理共价键的前处理流程
- 预测未来的神技——有趣的马尔科夫链
- CString的头文件
- Android apk签名方法介绍
- Ubuntu20.04设置静态IP,安装Samba服务,实现win10远程访问文件夹
- 承兑汇票拒付什么情况下才能追索
- 【404 App】v2.0版本各个渠道统计
热门文章
- 船舶照明行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
- 学计算机可以玩手机吗,但就一般工作学习使用而言,是否可以把手机CPU作为电脑CPU使用?...
- IIS下配置跨域设置Access-Control-Allow-Origin
- IE和Windows系统中的彩蛋
- 利用机器学习的排名模型,提升你在英雄联盟的排名
- TypeScript 令我苦不堪言
- 虎牙被抬员工当事人再发声;淘宝回应网店客服“看见”用户未发送内容;Python 3.9.2 发布 | 极客头条...
- GitHub 年度报告正式发布,JavaScript 霸榜、TypeScript 爆发!
- 中国最优秀的程序员都有哪些?王兴、张小龙、张一鸣是哪类?| 蒋涛说
- 董明珠今晚开启抖音直播首秀;传苹果将去掉 iPhone 闪电接口;PyTorch 1.5 发布 | 极客头条...