1.html简易代码,用display:none隐藏了file input框
<div>
<span>头像</span>
<img src="test.jpg" class="avatar" onerror="javascript:this.src='noavatar.jpg';"/>
<a href="javascript:;" id="avatar">修改</a>
<input type="file" id="chat_image" name="avatar" style="display: none;">
</div>
2.两行代码搞定,点击按钮弹出选择文件窗口
//异步上传头像
$('#avatar').click(function () {
return $('#chat_image').click(); //注意这句,主要是需要return点击事件返回值
});3.如果有同学需要jq异步上传图片代码的话 就看下面这段
注意:这里需要先引入ajaxfileupload.js,网上版本太多,我这里发一个自己用的https://github.com/wubojing/ajaxfileupload
//上传图片封装
$('#chat_image').change(function () {
$.ajaxFileUpload({
url:"{:url('User/uploadAvatar')}", //你处理上传文件的服务端
secureuri:false,
fileElementId:'chat_image',//与页面处理代码中file相对应的ID值
processData : false,
contentType : false,
dataType: 'json', //返回数据类型:看后端返回的是什么数据
success: function (data, status) {
// console.log(data);
//处理成功之后刷新页面
setTimeout(function(){
window.location.reload();
},1000)
},
error: function(data, status, e){ //提交失败自动执行的处理函数
alert(e);
}
})
});4.php端的代码,如果不是thinkphp的话就用$_FILES['avatar']
$file = request()->file('avatar');//获取表单上传文件,这里的参数就是前端input的name