TA的每日心情 | 奋斗 5 天前 |
---|
签到天数: 3 天 连续签到: 1 天 [LV.2]偶尔看看I 766680204
|
php直接上传单张图片无缝上传 html+js+php 不用提交base64代码给后端直接地址返给前端并且预览用base64
这个是我在做一个实名认证上传身份证照片优化的代码 分享出来给有需要的
html代码
- <div class="form-group">
- <label class="col-md-12">身份证正面</label>
- <div class="col-md-6">
- <input type="hidden" name="user_card" id="user_card">
- <button type="button" class="btn btn-danger" id="upload"><i class="fa fa-photo"></i> 上传 </button>
- <div>注意:图片不能超过1.5M</div>
- </div>
- <img id="preview" src="/static/images/nopic.png">
- <span id="preview_text">展示</span>
- </div>
复制代码 js代码
- layui.use('upload', function(){
- var $ = layui.jquery;
- var upload = layui.upload;
-
- var uploadInst = upload.render({
- elem: '#upload', // 绑定上传按钮的ID
- url: '', // 替换为您的服务器上传接口的URL
- // data: {gongneng:"upload"},
- accept: 'images', // 允许上传的文件类型
- exts: 'jpg|png|gif|jpeg', // 允许上传的文件扩展名
- size: 1550, // 设置文件大小限制,单位为KB,这里设置为1.51MB
- before: function(obj){
- // 上传前预览图片
- obj.preview(function(index, file, result){
- $('#preview').attr('src', result).show(); // 设置预览图片的src属性,并显示图片
- // 不将Base64编码结果设置到hidden input中
- });
- },
- done: function(res){
- // 上传完成后的回调函数,res为服务器返回的响应
- if(res.code === 0){ // 根据您的服务器响应格式调整判断条件
- layer.msg('上传成功');
- // 假设服务器返回的文件路径在res.data.filePath中
- $('#user_card').val(res.filePath); // 将文件路径存储到hidden input中
- } else {
- layer.msg('上传失败,请重试');
- }
- },
- error: function(){
- // 上传出错时的回调函数
- layer.msg('上传出错,请检查网络或文件大小');
- }
- });
- });
复制代码 php后端代码
- if($a=="tupian"){
- $user_card = md5($user_id).".png"; //用了MD5加密
- $tmp = $_FILES["file"]['tmp_name'];
- $tp = "usercard/{$user_card}";
- if (move_uploaded_file($tmp, $tp)) {
- // 文件保存成功
- echo json_encode(array("code"=>0,"filePath"=>"$user_card","msg"=>"上传成功"));
- } else {
- // 文件保存失败
- $msg= $_FILES['file']['error'];
- echo json_encode(array("code"=>1,"filePath"=>"$user_card","msg"=>"$msg"));
- }
- }
复制代码
|
|