侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子

Laravel  /  管理员 发布于 8年前   190

首先先看下效果图

这是添加的时候 可以上传照片

这是编辑的时候 可以修改照片

代码部分:

先看控制器:

/***   * 添加商户   * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View   */  public function add()  {     $data = null;    return _view('admin.merchant.merchant.edit', compact('data'));  }   /***   * 添加商户   * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View   */  public function store(StoreMenchantRequest $request)  {    //判断手机号是否重复 重复不能添加    //后面开发可能会去掉这个判断    $merchant = Merchant::where('mobile', $request->mobile)->first();    if (!empty($merchant)) {      return back()->withErrors('该用户已存在');    }    $token = str_random(60);    $api_token = $this->getToken($token);    $newMerchantData = [      'mobile' => $request->mobile,      'api_token' => $api_token,    ];    DB::beginTransaction();    $newMerchant = Merchant::create($newMerchantData);    $newData = [      'merchant_id' => $newMerchant->id,//Merchantid      'merchant_principal' => $request->merchant_principal,//负责人      'merchant_name' => $request->merchant_name,//商家名称      'merchant_short_name' => $request->merchant_short_name,//商家简称      'merchant_address' => $request->merchant_address,//商家地址      'business_num' => $request->business_num,//注册号      'business_address' => $request->business_address,//营业地址      'business_name' => $request->business_name,//营业执照名称      'business_person' => $request->person,//营业执照法人      'identity_name' => $request->person,//身份证姓名      'identity_num' => $request->identity_num,//身份证号    ];    //上传缩略图    $input = $request->all();    if (isset($input['file']) && is_object($input['file'])) {       $file_name = save_image_file($input['file'], 'merchant_infos');      if (!$file_name) {        return back()->with('msg', '图片上传失败,请重试!');      }//      dd($file_name);      $input['thumbnail'] = $file_name;      unset($input['_token']);      unset($input['file']);    } else {      return back()->with('msg', '请上传图片');    }    //上传内景图1    if (isset($input['image1']) && is_object($input['image1'])) {       $file_name_1 = save_image_file($input['image1'], 'merchant_infos');      if (!$file_name_1) {        return back()->with('msg', '图片上传失败,请重试!');      }       $input['interior_figure_one'] = $file_name_1;      unset($input['_token']);      unset($input['image1']);    } else {      return back()->with('msg', '请上传图片');    }    //上传内景图2    if (isset($input['image2']) && is_object($input['image2'])) {       $file_name_2 = save_image_file($input['image2'], 'merchant_infos');      if (!$file_name_2) {        return back()->with('msg', '图片上传失败,请重试!');      }      $input['interior_figure_two'] = $file_name_2;      unset($input['_token']);      unset($input['image2']);    } else {      return back()->with('msg', '请上传图片');    }    //上传内景图3    if (isset($input['image3']) && is_object($input['image3'])) {       $file_name_3 = save_image_file($input['image3'], 'merchant_infos');      if (!$file_name_3) {        return back()->with('msg', '图片上传失败,请重试!');      }      $input['interior_figure_three'] = $file_name_3;      unset($input['_token']);      unset($input['image3']);    } else {      return back()->with('msg', '请上传图片');    }     $merchantInfo = MerchantInfo::where('merchant_id', $newMerchant->id)->first();    if (!empty($merchantInfo)) {      return back()->withErrors('该用户已录入信息');    }    $homestayInfo = HomestayInfo::where('merchant_id', $newMerchant->id)->first();    if (!empty($homestayInfo)) {      return back()->withErrors('该用户已录入信息');    }    //录入商户信息    $newData['thumbnail'] = $input['thumbnail'];    $newData['interior_figure_one'] = $input['interior_figure_one'];    $newData['interior_figure_two'] = $input['interior_figure_two'];    $newData['interior_figure_three'] = $input['interior_figure_three'];    $newData['content'] = $input['content'];    $newMerchantInfo = MerchantInfo::create($newData);    $newHomestayInfo = HomestayInfo::create($newData);    if ($newMerchantInfo && $newHomestayInfo && $newMerchant) {      DB::commit();      admin_action_logs($newMerchant, "添加商户成功");      return redirect()->route('admin.merchant.index')->with('msg', '添加成功');    } else {      DB::rollback();      return back()->withErrors('添加失败,请联系管理员');    }    }

这边封装了一个上传图片的方法,调用即可

** * 调用的文件中需要 use Illuminate\Support\Facades\Input; Illuminate\Support\Facades\Storage; * save_image_file 保存图片文件 ,存在Storage::disk('uploads') 目录下 * @var $file object 上传的图片文件,具体是在 request 中的 UploadedFile 类型的对象 * @var $prefix_name string 可选保存的文件名前缀 * @var $path string 文件路径 * @return bool/string 如果通过验证 则返回在新的文件名 */if (!function_exists('save_image_file')) {   function save_image_file(&$file, $prefix_name = '', $path = 'serve')  {    $file = isset($file) ? $file : null;    if ($file != null && $file->isValid()) {      // 获取文件相关信息      $originalName = $file->getClientOriginalName(); // 文件原名      $ext = $file->getClientOriginalExtension();   // 扩展名      //dd($ext);      $file->getClientOriginalName();       if ($ext == "" && $file->getClientOriginalName() == 'blob') {        $ext = 'png';      }      if (!preg_match('/jpg|png|gif$/is', $ext)) {        return false;      }      //dd($file->getRealPath());      $realPath = $file->getRealPath();  //临时文件的绝对路径      $type = $file->getClientMimeType();   // image/jpeg      // 上传文件      $filename = $prefix_name . '-' . date('Y-m-d-H-i-s') . '-' . uniqid() . '.' . $ext;      //dd($filename);      $bool = Storage::disk($path)->put($filename, file_get_contents($realPath));      if (!$bool) return false;      return $filename;    }    return false;  }}

接下来是编辑时候 显示已经上传的图片 并且可以进行修改:

{{ Form::open(['method'=>'post','route' => ['admin.merchant.add_img_store'],'enctype'=>'multipart/form-data']) }}
商户图片
@if( $hasUrl ) @else @endif
merchantInfo->thumbnail)?$data->merchantInfo->thumbnail:' ')}}" data-src="https:/article/{{ asset('storage/serve').'/'. (isset($data->merchantInfo->thumbnail)?$data->merchantInfo->thumbnail:' ')}}" @endif id="file-preview" class="img-thumbnail" alt="图片预览" data-magnify="gallery">
@if( $hasUrl ) @else @endif
merchantInfo->interior_figure_one)?$data->merchantInfo->interior_figure_one:'')}}" data-src="https:/article/{{ asset('storage/serve').'/'.(isset($data->merchantInfo->interior_figure_one)?$data->merchantInfo->interior_figure_one:'')}}" @endif width="375px" height="200px" id="file-preview-second" class="img-thumbnail" alt="图片预览" data-magnify="gallery">
@if( $hasUrl ) @else @endif
merchantInfo->interior_figure_two)?$data->merchantInfo->interior_figure_two:'')}}" data-src="https:/article/{{ asset('storage/serve').'/'.(isset($data->merchantInfo->interior_figure_two)?$data->merchantInfo->interior_figure_two:'')}}" @endif width="375px" height="200px" id="file-preview-third" class="img-thumbnail" alt="图片预览" data-magnify="gallery">
@if( $hasUrl ) @else @endif
merchantInfo->interior_figure_three)?$data->merchantInfo->interior_figure_three:'')}}" data-src="https:/article/{{ asset('storage/serve').'/'.(isset($data->merchantInfo->interior_figure_three)?$data->merchantInfo->interior_figure_three:'')}}" @endif width="375px" height="200px" id="file-preview-forth" class="img-thumbnail" alt="图片预览" data-magnify="gallery">
{{ Form::close() }}

编辑这边 的控制器代码是:

/*** * 添加图片 * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */public function add_img(){  $data = null;  return _view('admin.merchant.merchant.add', compact('data'));} /*** * 保存图片 * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */public function add_img_store(Request $request){  //上传缩略图  $input = $request->all();   if (isset($input['file']) && is_object($input['file'])) {     $file_name = save_image_file($input['file'], 'merchant_infos');    if (!$file_name) {      return back()->with('msg', '图片上传失败,请重试!');    }     $input['thumbnail'] = $file_name;    unset($input['_token']);    unset($input['file']);  } else {    return back()->with('msg', '请上传图片');  }  //上传内景图1  if (isset($input['image1']) && is_object($input['image1'])) {     $file_name_1 = save_image_file($input['image1'], 'merchant_infos');    if (!$file_name_1) {      return back()->with('msg', '图片上传失败,请重试!');    }     $input['interior_figure_one'] = $file_name_1;    unset($input['_token']);    unset($input['image1']);  } else {    return back()->with('msg', '请上传图片');  }  //上传内景图2  if (isset($input['image2']) && is_object($input['image2'])) {     $file_name_2 = save_image_file($input['image2'], 'merchant_infos');    if (!$file_name_2) {      return back()->with('msg', '图片上传失败,请重试!');    }    $input['interior_figure_two'] = $file_name_2;    unset($input['_token']);    unset($input['image2']);  } else {    return back()->with('msg', '请上传图片');  }  //上传内景图3  if (isset($input['image3']) && is_object($input['image3'])) {     $file_name_3 = save_image_file($input['image3'], 'merchant_infos');    if (!$file_name_3) {      return back()->with('msg', '图片上传失败,请重试!');    }    $input['interior_figure_three'] = $file_name_3;    unset($input['_token']);    unset($input['image3']);  } else {    return back()->with('msg', '请上传图片');  }  //录入商户信息   $merchang_info = MerchantInfo::where('merchant_id', '=', $input['id'])->first();  if (empty($merchang_info)) {    $newData['thumbnail'] = $input['thumbnail'];    $newData['merchant_id'] = $input['id'];    $newData['interior_figure_one'] = $input['interior_figure_one'];    $newData['interior_figure_two'] = $input['interior_figure_two'];    $newData['interior_figure_three'] = $input['interior_figure_three'];    $newData['content']='';    $result = MerchantInfo::create($newData);  } /* $newData['thumbnail']=$input['thumbnail'];  $newData['interior_figure_one']=$input['interior_figure_one'];  $newData['interior_figure_two']=$input['interior_figure_two'];  $newData['interior_figure_three']=$input['interior_figure_three'];  // $newData['content']=$input['content'];  $newMerchantInfo = MerchantInfo::create($newData);*/  else {    $merchang_info->thumbnail = $input['thumbnail']??'';    $merchang_info->interior_figure_one = $input['interior_figure_one']??'';    $merchang_info->interior_figure_two = $input['interior_figure_two']??'';    $merchang_info->interior_figure_three = $input['interior_figure_three']??'';    $result = $merchang_info->save();  }  if ($result) {    DB::commit();    admin_action_logs($result, "编辑商户成功");    return redirect()->route('admin.merchant.index')->with('msg', '编辑成功');  } else {    DB::rollback();    return back()->withErrors('编辑失败,请联系管理员');  }}

以上这篇laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

您可能感兴趣的文章:

  • Laravel+Layer实现图片上传功能(整理篇)
  • PHP Laravel 上传图片、文件等类封装
  • laravel实现一个上传图片的接口,并建立软链接,访问图片的方法
  • laravel 实现上传图片到本地和前台访问示例
  • laravel实现上传图片的两种方式小结
  • Laravel框架实现的上传图片到七牛功能详解
  • laravel 多图上传及图片的存储例子
  • laravel实现上传图片并在页面显示的例子
  • laravel实现上传图片,并且制作缩略图,按照日期存放的代码
  • laravel框架上传图片实现实时预览功能
  • laravel5.5框架的上传图片功能实例分析【仅传到服务器端】


  • 上一条:
    在 Laravel 6 中缓存数据库查询结果的方法
    下一条:
    确保Laravel网站不会被嵌入到其他站点中的方法
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • Laravel 11.15版本发布 - Eloquent Builder中添加的泛型(0个评论)
    • Laravel 11.14版本发布 - 新的字符串助手和ServeCommand改进(0个评论)
    • Laravel 11.12版本发布 - Artisan的`make`命令自动剪切`.php `扩展(0个评论)
    • Laravel的轻量型购物车扩展包:binafy/laravel-cart(0个评论)
    • Laravel 11.11版本发布 - 查看模型中的第三方关系:show(0个评论)
    • 近期文章
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2017-07
    • 2017-08
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-08
    • 2020-09
    • 2020-10
    • 2020-11
    • 2021-01
    • 2021-02
    • 2021-03
    • 2021-04
    • 2021-05
    • 2021-06
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-11
    • 2021-12
    • 2022-01
    • 2022-02
    • 2022-03
    • 2022-04
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-06
    • 2023-07
    • 2023-08
    • 2023-09
    • 2023-10
    • 2023-11
    • 2023-12
    • 2024-01
    • 2024-02
    • 2024-03
    • 2024-04
    • 2024-05
    • 2024-06
    • 2024-07
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客