thinkphp5怎么加layui实现图片上传功能

后端开发   发布日期:2023年08月17日   浏览次数:512

本篇内容介绍了“thinkphp5怎么加layui实现图片上传功能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

网站中很多表单都会用到上传图片,logo,照片,用户也会上传图片,这个时候网站就需要一个上传图片的功能,而且在上传后希望能预览一下看上传的对不对。

thinkphp5加layui实现图片上传功能(带图片预览)思路,异步传输图片并预览,将异步上传后的值返回表单隐藏域再提交。

1、引入文件

首先,要引入jQuery文件,这是必须的

  1. <link rel="stylesheet" type="text/css" href="https://www.19jp.com">

2、HTML部分

  1. <form class="layui-form">
  2. <div class="layui-input-inline">
  3. <button class="layui-btn layui-btn-sm" onclick="return false;" id="upload_img"><i class="layui-icon">&#xe67c;</i>上传图片</button>
  4. <img id="pre_img" <?php if($data['item']['img']){echo 'src="'.$data['item']['img'].'"';}?> />
  5. <input type="hidden" name="img" value="{$data.item.img}">
  6. </div>
  7. <div class="layui-form-item">
  8. <div class="layui-input-block">
  9. <button class="layui-btn" onclick="save()">保存</button>
  10. </div>
  11. </div>
  12. </form>

3、功能实现

  1. <script type="text/javascript">
  2. layui.use(['form','layer','upload'],function(){
  3. $ = layui.jquery;
  4. var form = layui.form;
  5. layer = layui.layer;
  6. var upload = layui.upload;
  7. //执行实例
  8. var uploadInst = upload.render({
  9. elem: '#upload_img' //绑定元素
  10. ,url: '/admins.php/admins/video/upload_img' //上传接口
  11. ,accept:'images'
  12. ,done: function(res){
  13. //上传完毕回调
  14. $('#pre_img').attr('src',res.msg);
  15. $('input[name="img"]').val(res.msg);
  16. }
  17. ,error: function(){
  18. //请求异常回调
  19. }
  20. });
  21. });
  22. // 保存
  23. function save(){
  24. var title = $.trim($('input[name="title"]').val());
  25. var url = $.trim($('input[name="url"]').val());
  26. if(title == ''){
  27. layer.msg('请输入影片名称',{'icon':2,'anim':6});
  28. return;
  29. }
  30. if(url == ''){
  31. layer.msg('请输入影片地址',{'icon':2,'anim':6});
  32. return;
  33. }
  34. $.post('/admins.php/admins/video/save',$('form').serialize(),function(res){
  35. if(res.code>0){
  36. layer.msg(res.msg,{'icon':2,'anim':2});
  37. }else{
  38. layer.msg(res.msg,{'icon':1});
  39. setTimeout(function(){parent.window.location.reload();},1000);
  40. }
  41. },'json');
  42. }
  43. </script>

4、后台处理

图片上传

  1. public function upload_img(){
  2. $file = request()->file('file');
  3. if($file==null){
  4. exit(json_encode(array('code'=>1,'msg'=>'没有文件上传')));
  5. }
  6. $info = $file->move(ROOT_PATH.'public'.DS.'uploads');
  7. $ext = ($info->getExtension());
  8. if(!in_array($ext,array('jpg','jpeg','gif','png'))){
  9. exit(json_encode(array('code'=>1,'msg'=>'文件格式不支持')));
  10. }
  11. $img = '/uploads/'.$info->getSaveName();
  12. exit(json_encode(array('code'=>0,'msg'=>$img)));
  13. }

保存内容

  1. public function save(){
  2. $id = (int)input('post.id');
  3. $data['title'] = trim(input('post.title'));
  4. $data['channel_id'] = (int)input('post.channel_id');
  5. $data['charge_id'] = (int)input('post.charge_id');
  6. $data['area_id'] = (int)input('post.area_id');
  7. $data['img'] = trim(input('post.img'));
  8. $data['url'] = trim(input('post.url'));
  9. $data['keywords'] = trim(input('post.keywords'));
  10. $data['desc'] = trim(input('post.desc'));
  11. $data['status'] = (int)input('post.status');
  12. if($data['title'] == ''){
  13. exit(json_encode(array('code'=>1,'msg'=>'影片名称不能为空')));
  14. }
  15. if($data['url'] == ''){
  16. exit(json_encode(array('code'=>1,'msg'=>'影片地址不能为空')));
  17. }
  18. if($id){
  19. $this->db->table('video')->where(array('id'=>$id))->update($data);
  20. }else{
  21. $data['add_time'] = time();
  22. $this->db->table('video')->insert($data);
  23. }
  24. exit(json_encode(array('code'=>0,'msg'=>'保存成功')));
  25. }

以上就是thinkphp5怎么加layui实现图片上传功能的详细内容,更多关于thinkphp5怎么加layui实现图片上传功能的资料请关注九品源码其它相关文章!