laravel实现上传图片,并且制作缩略图,按照日期存放的代码


Posted in PHP onOctober 16, 2019

先上代码吧:

前端代码:

有很多小伙伴在做表单上传文件的时候没有注意表单的上传格式是什么,就可能导致上传文件、图片不成功!

<form id="form1" name="form1" class="form-horizontal form-label-left" enctype="multipart/form-data" method="post" action="{{asset('/content/add')}}" οnsubmit="submitContent()">
{{method_field('PUT')}}
laravel里面使用method_field()函数来伪造一些http请求;

<div class="form-group">
 <label class="control-label col-md-3 col-sm-3 col-xs-12" for="main_img">展示主图 <span class="required">*</span></label>
 <div class="col-md-6 col-sm-6 col-xs-12">
 <div id="inputBox">
  <input type="file" title="请选择图片" id="mainImg" name="main_img" required multiple accept="image/png,image/jpg,image/gif,image/JPEG"/>
  <div id="mainImgBox"></div>
 </div>
 </div>
</div>
 {!! csrf_field() !!}

给表单加入token;

后端处理:

首先我使用的是Intervention Image类库来制作图片的缩略图、以及保存图片到指定位置;

关于Intervention Image类库我就不多做介绍,如有不了解的请度娘帮助;

<?php
namespace App\Http\Controllers\Admin;
 
use App\Http\Controllers\Controller;
use Image;
use Validator;
 
class ContentController extends Controller{
 public function addProcess(){
 $inputData = request()->all();
 $rules = [
  'main_img' => [ 'file','image','max:10240' ]
 ];
 $validator = Validator::make($inputData,$rules);
 if($validator->fails()){
  return back()->withErrors($validator)->withInput();
 }
 
  $photo = $inputData['main_img'];
  $file_name = uniqid().'.'.$photo->getClientOriginalExtension();
  $file_relative_path = 'assess/images/content/'.date('Y-m-d');
  $file_path = public_path($file_relative_path);
  if (!is_dir($file_path)){
  mkdir($file_path);
  }
  $thumbnail_file_path = $file_path . '/thumbnail-'.$file_name;
  $image = Image::make($photo)->resize(200, null, function ($constraint) {$constraint->aspectRatio();})->save($thumbnail_file_path);
  $file_path .= '/'.$file_name;
  $image = Image::make($photo)->save($file_path);
 
 echo ‘上传成功!';
 }
}

后端处理主要思想:首先通过Validator类库来检验当前上传上来的文件是否符合要求,如果符合要求,就可以对图片进行处理了;处理的时候我是先把要保存图片的相对地址给拼接好,然后通过laravel里面的public_path函数得出绝对的local地址;再去判断该文件夹是否存在,如果不存在那就创建该文件夹。创建好文件夹后我们就应该对上传上来的图片进行进一步处理了,比如我这里需要制作它的缩略图,并且保证图片横纵比,如果有其他的要求,可以前往Intervention Image类库自行查看怎么制作。

以上这篇laravel实现上传图片,并且制作缩略图,按照日期存放的代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
针对初学PHP者的疑难问答(2)
Oct 09 PHP
用php实现批量查询清除一句话后门的代码
Jan 20 PHP
php 转换字符串编码 iconv与mb_convert_encoding的区别说明
Nov 10 PHP
php json与xml序列化/反序列化
Oct 28 PHP
is_uploaded_file函数引发的不能上传文件问题
Oct 29 PHP
php基于CodeIgniter实现图片上传、剪切功能
May 14 PHP
深入剖析PHP中printf()函数格式化使用
May 23 PHP
yii的入口文件index.php中为什么会有这两句
Aug 04 PHP
php文件上传、下载和删除示例
Aug 28 PHP
ThinkPHP中调用PHPExcel的实现代码
Apr 08 PHP
PHP实现的字符串匹配算法示例【sunday算法】
Dec 19 PHP
使用laravel和ajax实现整个页面无刷新的操作方法
Oct 03 PHP
修改Laravel自带的认证系统的User类的命名空间的步骤
Oct 15 #PHP
解决Laravel自定义类引入和命名空间的问题
Oct 15 #PHP
laravel 如何实现引入自己的函数或类库
Oct 15 #PHP
Laravel 类和接口注入相关的代码
Oct 15 #PHP
在PHP中实现使用Guzzle执行POST和GET请求
Oct 15 #PHP
在Laravel中使用GuzzleHttp调用第三方服务的API接口代码
Oct 15 #PHP
解决在laravel中auth建立时候遇到的问题
Oct 15 #PHP
You might like
php动态函数调用方法
2015/05/21 PHP
PHP实现webshell扫描文件木马的方法
2017/07/31 PHP
利用JQuery为搜索栏增加tag提示
2009/06/22 Javascript
JS 表单验证大全
2011/11/23 Javascript
JQquery的一些使用心得分享
2012/08/01 Javascript
解析javascript中鼠标滚轮事件
2015/05/26 Javascript
简介JavaScript中的getSeconds()方法的使用
2015/06/10 Javascript
举例讲解Node.js中的Writable对象
2015/07/29 Javascript
基于JavaScript实现移除(删除)数组中指定元素
2016/01/04 Javascript
Bootstrap轮播插件简单使用方法介绍
2016/06/21 Javascript
浅谈javascript的闭包
2017/01/23 Javascript
JavaScript模块模式实例详解
2017/10/25 Javascript
Vue + Vue-router 同名路由切换数据不更新的方法
2017/11/20 Javascript
springMvc 前端用json的方式向后台传递对象数组方法
2018/08/07 Javascript
javascript实现的时间格式加8小时功能示例
2019/06/13 Javascript
微信小程序实现点击空白隐藏的方法示例
2019/08/13 Javascript
Vue.js计算机属性computed和methods方法详解
2019/10/12 Javascript
vue.js循环radio的实例
2019/11/07 Javascript
Vue+webpack实现懒加载过程解析
2020/02/17 Javascript
关于vue3默认把所有onSomething当作v-on事件绑定的思考
2020/05/15 Javascript
[52:20]DOTA2-DPC中国联赛正赛 SAG vs XGBO3 第一场 3月5日
2021/03/11 DOTA
python用模块zlib压缩与解压字符串和文件的方法
2016/12/16 Python
python爬虫爬取快手视频多线程下载功能
2018/02/28 Python
Python使用cx_Oracle模块操作Oracle数据库详解
2018/05/07 Python
Python计算开方、立方、圆周率,精确到小数点后任意位的方法
2018/07/17 Python
python 图像插值 最近邻、双线性、双三次实例
2020/07/05 Python
LA MER海蓝之谜美国官网:传奇面霜
2016/08/27 全球购物
东芝官网商城:还原日式美学,打造美好生活
2018/12/27 全球购物
精美的手工家居和生活用品:Nkuku
2019/11/01 全球购物
中间件的定义
2016/08/09 面试题
英语师范专业毕业生自荐信
2013/09/21 职场文书
个人评语大全
2014/05/04 职场文书
2015元旦晚会主持人开场白+结束语
2014/12/14 职场文书
四则混合运算教学反思
2016/02/23 职场文书
2019年图书室自查报告范本
2019/10/12 职场文书
mysql下的max_allowed_packet参数设置详解
2022/02/12 MySQL