Larvel5.2上传图片并显示缩略图

1.建立控制器UploadController.PHP

  1. <?php namespace App\Http\Controllers;  
  2.   
  3. use App\Http\Requests;  
  4. use App\Http\Controllers\Controller;  
  5.   
  6. use Illuminate\Http\Request;  
  7. use Illuminate\Support\Facades\Input;  
  8. use Redirect, Response;  
  9. class UploadController extends Controller {  
  10.   
  11.      //Ajax上传图片  
  12.     public function imgUpload()  
  13.     {  
  14.         $file = Input::file('file');  
  15.         $id = Input::get('id');  
  16.         $allowed_extensions = ["png""jpg""gif"];  
  17.         if ($file->getClientOriginalExtension() && !in_array($file->getClientOriginalExtension(), $allowed_extensions)) {  
  18.             return ['error' => 'You may only upload png, jpg or gif.'];  
  19.         }  
  20.   
  21.         $destinationPath = 'lib/uploads/images/';  
  22.         $extension = $file->getClientOriginalExtension();  
  23.         $fileName = str_random(10).'.'.$extension;  
  24.         $file->move($destinationPath$fileName);  
  25.         return Response::json(  
  26.             [  
  27.                 'success' => true,  
  28.                 'pic' => asset($destinationPath.$fileName), //这里返回的是文件地址+文件名  
  29.                 'id' => $id,  
  30.                 'fname' => $fileName//这里返回的是文件名  
  31.             ]  
  32.         );  
  33.     }  
  34.   
  35.       
  36. }  


2.注册路由
  1. //图片上传  
  2.    Route::post('upload_img','UploadController@imgUpload');  

3.编写upload.css,放到public/lib/css(文件夹需要自己建)
  1. .thumb-wrap{  
  2.     overflowhidden;  
  3. }  
  4. .thumb-wrap img{  
  5.     margin-top10px;  
  6. }  
  7. .pic-upload{  
  8.     width100%;  
  9.     height34px;  
  10.     margin-bottom10px;  
  11. }  
  12. #thumb-show{  
  13.     max-width100%;  
  14.     max-height300px;  
  15. }  
  16. .upload-mask{  
  17.     positionfixed;  
  18.     top:0;  
  19.     left: 0;  
  20.     width100%;  
  21.     height100%;  
  22.     background: rgba(0,0,0,.4);  
  23.     z-index1000;  
  24. }  
  25. .upload-file .close{  
  26.     cursorpointer;  
  27.     font-size14px;  
  28. }  
  29.   
  30. .upload-file{  
  31.     positionabsolute;  
  32.     top: 50%;  
  33.     left: 50%;  
  34.     margin-top-105px;  
  35.     margin-left-150px;  
  36.     max-width300px;  
  37.     z-index1001;  
  38.     displaynone;  
  39. }  
  40.   
  41. .upload-mask{  
  42.     displaynone;  
  43. }  

4.在resource/views/建立模板upload_img.blade.php,form要老老实实的用标签写,否则报错
  1. <div class="upload-mask">  
  2. </div>  
  3. <div class="panel panel-info upload-file">  
  4.     <div class="panel-heading">  
  5.         上传图片  
  6.         <span class="close pull-right">关闭</span>  
  7.     </div>  
  8.     <div class="panel-body">  
  9.         <div id="validation-errors"></div>  
  10.         <form action="{{ URL('upload_img') }}" method='post' enctype="multipart/form-data" id='imgForm'>  
  11.           
  12.         <div class="form-group">  
  13.             <label>图片上传</label>  
  14.             <span class="require">(*)</span>  
  15.             <input id="thumb" name="file" type="file"  required="required">  
  16.             <input id="imgID"  type="hidden" name="id" value="">  
  17.              
  18.         </div>  
  19.        </form>  
  20.     </div>  
  21.     <div class="panel-footer">  
  22.     </div>  
  23. </div>  


5.建立上传的js,可以放到模板upload_img里面去
  1. $(function(){  
  2. //上传图片相关  
  3.   
  4. $('.upload-mask').on('click',function(){  
  5.     $(this).hide();  
  6.     $('.upload-file').hide();  
  7. })  
  8.   
  9. $('.upload-file .close').on('click',function(){  
  10.     $('.upload-mask').hide();  
  11.     $('.upload-file').hide();  
  12. })  
  13.   
  14. var imgSrc = $('.pic-upload').next().attr('src');  
  15. console.log(imgSrc);  
  16. if(imgSrc == ''){  
  17.     $('.pic-upload').next().css('display','none');  
  18. }  
  19. $('.pic-upload').on('click',function(){  
  20.     $('.upload-mask').show();  
  21.     $('.upload-file').show();  
  22.     console.log($(this).next().attr('id'));  
  23.     var imgID = $(this).next().attr('id');  
  24.     $('#imgID').attr('value',imgID);  
  25. })  
  26.   
  27. //ajax 上传  
  28. $(document).ready(function() {  
  29.     var options = {  
  30.         beforeSubmit:  showRequest,  
  31.         success:       showResponse,  
  32.         dataType: 'json'  
  33.     };  
  34.     $('#imgForm input[name=file]').on('change'function(){  
  35.         //$('#upload-avatar').html('正在上传...');  
  36.         $('#imgForm').ajaxForm(options).submit();  
  37.     });  
  38. });  
  39.   
  40. function showRequest() {  
  41.     $("#validation-errors").hide().empty();  
  42.     $("#output").css('display','none');  
  43.     return true;  
  44. }  
  45.   
  46. function showResponse(response)  {  
  47.     if(response.success == false)  
  48.     {  
  49.         var responseErrors = response.errors;  
  50.         $.each(responseErrors, function(index, value)  
  51.         {  
  52.             if (value.length != 0)  
  53.             {  
  54.                 $("#validation-errors").append('<div class="alert alert-error"><strong>'+ value +'</strong><div>');  
  55.             }  
  56.         });  
  57.         $("#validation-errors").show();  
  58.     } else {  
  59.   
  60.         $('.upload-mask').hide();  
  61.         $('.upload-file').hide();  
  62.         $('.pic-upload').next().css('display','block');  
  63.   
  64.         console.log(response.pic);  
  65.         // 生成图片地址  
  66.         $("#"+response.id).attr('src',response.pic);   
  67.         $("#"+response.id).next().attr('value',response.fname); //我这里使用的是返回文件名,如果是本地使用,吧fname改成pic  
  68.   
  69.     }  
  70. }  

6.在需要使用的模版中使用,需要调用jquery和jquery.form和upload_img.blade.php文件
  1. <link href="{{asset('lib/css/upload.css')}}" rel="stylesheet">  
  2. <div class="form-group row">  
  3.      <label class="col-md-2 control-label">活动图片</label>  
  4.      <div class="col-md-4 thumb-wrap">  
  5.      <div class="pic-upload btn btn-block btn-info btn-flat" title="点击上传">点击上传</div>  
  6.           <img id="logo" src="{{ URL($act->activity_pic) }}" width='50%' height='30%'>  
  7.           <input type="hidden" name="logo" value="">  
  8.       </div>  
  9.  </div>  
  10. <script src="{{asset('lib/js/jquery-2.0.3.min.js')}}"></script>  
  11. <!-- 图片上传的js和引用文件 -->  
  12. <script src="{{asset('lib/js/jquery.form.js')}}"></script>  
  13. @include('upload_img')  



7.如果function ajaxform(...) doesn't exist,那么就是你jquery加载了两次,第二次会覆盖第一次,去谷歌浏览器F12,NETWORK可以看到加载了几次
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值