[PHP] Laravel 5.5 图片上传功能
以Laravel 5.5 框架为主,进行文件上传功能的实现如下:
一、配置文件修改
打开 config/filesystems.php 文件
在 ‘disks’ 数组中添加如下代码
//自定义
'uploadImg' => [
'driver' => 'local',
'root' => public_path('upload/images/'.date('Ymd')),
],
在 routes/web.php 中添加:
//文件上传接口,前后台共用
Route::post('uploadImg', 'PublicController@uploadImg')->name('uploadImg');
二、调用代码
这里后台采用 layui 框架
1) Html界面代码:_form.blade.php
<div class="layui-form-item">
<label for="" class="layui-form-label">缩略图</label>
<div class="layui-input-block">
<div class="layui-upload">
<button type="button" class="layui-btn" id="uploadPic"><i class="layui-icon"></i>图片上传</button>
<div class="layui-upload-list" >
<ul id="layui-upload-box" class="layui-clear">
@if(isset($article->thumb))
<li><img src="{{ $article->thumb }}" /><p>上传成功</p></li>
@endif
</ul>
<input type="hidden" name="thumb" id="thumb" value="{{ $article->thumb??'' }}">
</div>
</div>
</div>
</div>
2) js代码:_js.blade.php
<style>
#layui-upload-box li{
width: 120px;
height: 100px;
float: left;
position: relative;
overflow: hidden;
margin-right: 10px;
border:1px solid #ddd;
}
#layui-upload-box li img{
width: %;
}
#layui-upload-box li p{
width: %;
height: 22px;
font-size: 12px;
position: absolute;
left: ;
bottom: ;
line-height: 22px;
text-align: center;
color: #fff;
background-color: #;
opacity: 0.6;
}
#layui-upload-box li i{
display: block;
width: 20px;
height:20px;
position: absolute;
text-align: center;
top: 2px;
right:2px;
z-index:;
cursor: pointer;
}
</style>
<script>
layui.use(['upload'],function () {
var upload = layui.upload //普通图片上传
var uploadInst = upload.render({
elem: '#uploadPic'
,url: '{{ route("uploadImg") }}'
,multiple: false
,data:{"_token":"{{ csrf_token() }}"}
,before: function(obj){
//预读本地文件示例,不支持ie8
/*obj.preview(function(index, file, result){
$('#layui-upload-box').append('<li><img src="'+result+'" /><p>待上传</p></li>')
});*/
obj.preview(function(index, file, result){
$('#layui-upload-box').html('<li><img src="'+result+'" /><p>上传中</p></li>')
}); }
,done: function(res){
//如果上传失败
if(res.code == ){
$("#thumb").val(res.url);
$('#layui-upload-box li p').text('上传成功');
return layer.msg(res.msg);
}
return layer.msg(res.msg);
}
});
})
</script>
3) 后端存储
PublicController.php
<?php namespace App\Http\Controllers; use App\Traits\Msg;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
use zgldh\QiniuStorage\QiniuStorage; class PublicController extends Controller
{
use Msg; //图片上传处理
public function uploadImg(Request $request)
{
//上传文件最大大小,单位M
$maxSize = ;
//支持的上传图片类型
$allowed_extensions = ["png", "jpg", "jpeg", "gif"];
//返回信息json
$data = ['code' => , 'msg' => '上传失败', 'data' => ''];
$file = $request->file('file'); //检查文件是否上传完成
if (!$file->isValid()) {
$data['msg'] = $file->getErrorMessage();
return response()->json($data);
}
//检测图片类型
$ext = $file->getClientOriginalExtension();
if (!in_array(strtolower($ext), $allowed_extensions)) {
$data['msg'] = "请上传" . implode(",", $allowed_extensions) . "格式的图片";
return response()->json($data);
}
//检测图片大小
if ($file->getClientSize() > $maxSize * * ) {
$data['msg'] = "图片大小限制" . $maxSize . "M";
return response()->json($data);
}
$disk = Storage::disk('uploadImg');
// $disk = QiniuStorage::disk('qiniu');
$newFile = uniqid() . time() . "." . $file->getClientOriginalExtension();
$res = $disk->put($newFile, file_get_contents($file->getRealPath()));
if ($res) {
$downloadUrl = env('APP_URL') . '/upload/images/' . date('Ymd') . '/' . $newFile;
$data = [
'code' => ,
'msg' => '上传成功',
'data' => $newFile,
'url' => $downloadUrl
];
} else {
$data['data'] = $file->getErrorMessage();
}
return response()->json($data);
} }
本博客地址: wukong1688
本文原文地址:https://www.cnblogs.com/wukong1688/p/10988072.html
转载请著名出处!谢谢~~
[PHP] Laravel 5.5 图片上传功能的更多相关文章
- thinkphp达到UploadFile.class.php图片上传功能
片上传在站点里是非经常常使用的功能.ThinkPHP里也有自带的图片上传类(UploadFile.class.php) 和图片模型类(Image.class.php).方便于我们去实现图片上传功能,以 ...
- Spring+SpringMVC+MyBatis+easyUI整合优化篇(七)图片上传功能
日常啰嗦 前一篇文章<Spring+SpringMVC+MyBatis+easyUI整合优化篇(六)easyUI与富文本编辑器UEditor整合>讲了富文本编辑器UEditor的整合与使用 ...
- PHP语言学习之php做图片上传功能
本文主要向大家介绍了PHP语言学习之php做图片上传功能,通过具体的内容向大家展示,希望对大家学习php语言有所帮助. 今天来做一个图片上传功能的插件,首先做一个html文件:text.php < ...
- [Ting's笔记Day8]活用套件carrierwave gem:(3)Deploy图片上传功能到Heroku网站
前情提要: 身为Ruby新手村民,创造稳定且持续的学习步调很重要,我用的方法就是一周在IT邦写三篇笔记,希望藉由把笔记和遇到的bug记录下来的过程,能帮助到未来想用Ruby on Rails架站的新手 ...
- H5 利用vue实现图片上传功能。
H5的上传图片如何实现呢? 以下是我用vue实现的图片上传功能,仅供参考. <!DOCTYPE html> <html> <head> <meta chars ...
- 给DEDECMS广告管理中增加图片上传功能
dedecms的广告管理功能稍微有点次,本文就是在dedecms广告管理原有的基础上增加广告图片上传功能. 安装方法,对应自己的dedecms版本下载对应的编码然后解压把里面的文件放在后台目录覆盖即可 ...
- vue 图片上传功能
这次做了vue页面的图片上传功能,不带裁剪功能的! 首先是html代码,在input框上添加change事件,如下: <ul class="clearfix"> ...
- 前端丨如何使用 tcb-js-sdk 实现图片上传功能
前言 tcb-js-sdk 让开发者可以在网页端使用 JavaScript 代码服务访问云开发的服务,以轻松构建自己的公众号页面或者独立的网站等 Web 服务.本文将以实现图片上传功能为例,介绍 tc ...
- 改造百度UMeditor(UEditor-min)富文本编辑器的图片上传功能
最近项目需要新增一个发布文章的模块,用的是百度的Ueditor富文本编辑器. 公司用的是阿里云的图片服务器,需要直接把文章中图片上传到服务器上,但是这个编辑器的上传图片是直接上传到Tomcat的根目录 ...
随机推荐
- mqtt数据采集器
MQTT是一种发布(publish)/订阅(subscribe)协议,MQTT协议采用发布/订阅模式,所有的物联网终端都通过TCP连接到云端,云端通过主题的方式管理各个设备关注的通讯内容,负责将设备与 ...
- Spring Boot 如何干掉 if else?
需求 这里虚拟一个业务需求,让大家容易理解.假设有一个订单系统,里面的一个功能是根据订单的不同类型作出不同的处理. 订单实体: service接口: 传统实现 根据订单类型写一堆的if else: 策 ...
- WPF DataGrid 使用CellTemplateSelector 时SelectTemplate方法Item参数为NULL
首先说明 在SelectTemplate中并Item参数并不是真的一直为Null.而是先执行空参数,之后再会执行有参数的. 至于原因 我也不知道... 具体验证过程是 也就说 做好非空检测即可
- 使用linux/macos 自带的shell实现证书方式的快速登陆
一般登陆机器都是需要使用证书安全登陆到跳板机上然后在跳板机去登陆到各个机器. 我们建立一个统一的文件夹mykey,将登陆的pem证书放上去,然后创建一个空白的文件,vim jump.sh #!/usr ...
- .net core+topshelf+quartz创建windows定时任务服务
.net core+topshelf+quartz创建windows定时任务服务 准备工作 创建.net core 控制台应用程序,这里不做过多介绍 添加TopShelf包:TopShelf: 添加Q ...
- 2-Consul简介
Consul 是什么 Consul 是一个支持多数据中心分布式高可用的服务发现和配置共享的服务软件,由 HashiCorp 公司用 Go 语言开发, 基于 Mozilla Public License ...
- Linux组管理(6)
在linux中每个用户必须属于一个组,不能独立于组外.在linux中每个文件有所有者.所在组.其它组的概念. 文件/目录的所有者:一般为文件的创建者,谁创建了该文件,就自然成为该文件的所有者 查看文件 ...
- 双栈(Dual Stack)
参考博客: 双栈数据结构: https://blog.csdn.net/hebtu666/article/details/83011115 https://blog.csdn.net/cainv89/ ...
- ASP.NET Core IIS发布
ASP.NET Core应用发布到IIS 官网教程地址:https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/publish-to-iis?vi ...
- EF自动创建数据库步骤之一(实体类写法)
文章演示使用EF自动创建数据库第一个步骤创建实体类. 一.创建表映射实体类 using System; using System.Collections.Generic; using System.C ...