[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的根目录 ...
随机推荐
- tmp/ccdLyHub.o:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0' collect2: ld returned 1 exit status
其实就是一个问题,gcc只能编译.c文件,你如果取名为.cpp,那么gcc编译就会就会出现这个错误. 这种情况下: 1.用g++编译(.c 或.c++都可以编译) 2.仍用gcc编译,但是文件后缀改为 ...
- MySQL 快速添加百万条数据
需要向数据库添加100W条测试数据,直接在普通表中添加速度太慢,可以使用内存表添加,然后将内存表数据复制到普通表 创建表 # 内存表 DROP TABLE IF EXISTS `test_memory ...
- Mysql char(10) 与 varchar(10)的区别
DROP TABLE test_string; ), col_varchar )); INSERT INTO `test_string` VALUES ('mysql', 'mysql'); 在创建数 ...
- Server SQL2008对文件的基础操作—01
1.一个文件的基本框架为:文件名.文件地址.文件大小.文件最大的大小.文件的增量(Filegrowth). 2.文件有mdf.ndf.ldf 三种文件的区别. 3.文件组可以进行文件的管理 FileG ...
- kvm虚拟机日常管理与配置
1. 查看KVM虚拟机配置文件及运行状态 (1) KVM虚拟机默认配置文件位置: /etc/libvirt/qemu/ autostart目录是配置kvm虚拟机开机自启动目录. (2) vir ...
- [转]ASP.NET Core Web API 最佳实践指南
原文地址: ASP.NET-Core-Web-API-Best-Practices-Guide 转自 介绍# 当我们编写一个项目的时候,我们的主要目标是使它能如期运行,并尽可能地满足所有用户需求. 但 ...
- win10系统本地iis或nginx服务器部署vue.js项目
1.前端框架一般依赖node.js,我们首先要安装node.js.请参考: http://www.cnblogs.com/wuac/p/6381819.html to:安装好node.js后npm也安 ...
- 我是如何一步步编码完成万仓网ERP系统的(六)产品库设计 2.百度Ueditor编辑器
https://www.cnblogs.com/smh188/p/11533668.html(我是如何一步步编码完成万仓网ERP系统的(一)系统架构) https://www.cnblogs.com/ ...
- C#7语法快速参考-第一章 Hello World
选择IDE 要开始使用C#编程,您需要一个支持微软.NET框架的集成开发环境(IDE).最受欢迎的选择是微软自己的Visual Studio.初学可以使用Visual Studio Community ...
- QQ互联,填写回调时注意事项
今天在做QQ登录接口的时候,填写回调地址的时候,竟然出现了诡异的事情. 我的回调地址我直接填的域名,也申请通过了.但是在做开发地时候,一直提示这蛋疼的 redirect uri is illegal ...