使用ajax 图片上传之---------使用js 调用相机拍照并预览图片

场景:

今日接到一个需求,需要实现用户点击以下方块,调起相机拍照并且上传图片。主要涉及技术有 javascript,研究一番之后可以通过以下方法实现,以此记录一下。
在这里插入图片描述
html

<div class="getImg">
   <img src="./../img/use_img/upload.png" alt="" id="preLookImg">
   <input class="upload_input" name="img" type="file" accept="image/*" capture="camera" onchange="getImg(this)"/>
 </div>

css
将input框定位在图片的上方,全透明。

.getImg img{
    display: block;
    width: 100%; /* 高度自适应 */
}
 .getImg{
    width:100px;
    height:100px;
    position: relative;
    overflow: hidden;
}
.upload_input{
    width:100px;
    height:100px;
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    opacity: 0;
}
var file_name =''
//获取图片
function getImg(file) {
	let that = this
	var prevDiv = document.querySelector('#preLookImg');
	
	// * 使用IE浏览器的话此处可能获取不到 file.files;只能获取到 file.value
	if (file.files && file.files[0]) {
		var reader = new FileReader();
		reader.onload = function(evt) {
			file_name = evt.target.result
			prevDiv.setAttribute('src', evt.target.result)
	}
	reader.readAsDataURL(file.files[0]); // 读取文件 file.files[0]
}

// 上传图片
function uploadImg(e) {
    let file = file_name
    let param = new FormData()
    // 通过append向form对象添加数据
    param.append('image', file) 
    $.ajax({
        type : "POST",
        url : "upload/url",
        processData: false,  // 不希望转换传递的数据信息
        contentType: false, // 取消内容编码
        data: param,
        success : function(data){
            // 上传成功
        }
    })
}

以上就可以实现基本的上传图片功能。希望可以帮到你

使用input 调用相机拍照需要注意:

你可能需要:

将图片转换为 base64格式
将base64转换为文件
.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值