网站首页 > 技术文章 正文
仅作为Shane个人笔记
- 以下代码中出现的show方法
- 均为Shane写的用来返回
- 统一数据的接口方法
接收文件
/**
* 接收文件
*/
$file = request() -> file('file');
接收到文件后判断下收来的文件是否为null
/**
* 判断接收文件是否为空
*/
if ($file == null) {
return $this -> show(
config("status.failed"),
config("message.failed"),
'未上传图片'
);
}
截取上传文件名后缀
/**
* 截取上传文件名后缀
* 将文件名以.分割为数组
* 用PHP end函数取数组最后一个
* 即可得到上传文件后缀
*/
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
判断上传文件是否合法(是否为图片文件)
/**
* 判断上传文件是否合法
* 判断截取上传文件名是否为
* jpeg,jpg,png其中之一
*/
if(!in_array($extension, array("jpeg","jpg","png"))){
return $this -> show(
config("status.failed"),
config("message.failed"),
'上传图片不合法'
);
}
配置保存路径
用Filesystem将接收的文件移动至想放的路径
配置出一个常使用的路径出来比较好
找到config目录下的filesystem.php文件进行配置
'photo' => [
// 磁盘类型
'type' => 'local',
// 磁盘路径
'root' => app()->getRootPath() . 'public/uploads',
// 磁盘路径对应的外部URL路径
'url' => '/uploads',
// 可见性
'visibility' => 'public',
],
这里Shane配置的路径为public下的uploads文件夹
配置完后来看下filesystem.php整体是个什么样子
<?php
use think\facade\Env;
return [
// 默认磁盘
'default' => Env::get('filesystem.driver', 'local'),
// 磁盘列表
'disks' => [
'local' => [
'type' => 'local',
'root' => app()->getRuntimePath() . 'storage',
],
'public' => [
// 磁盘类型
'type' => 'local',
// 磁盘路径
'root' => app()->getRootPath() . 'public/storage',
// 磁盘路径对应的外部URL路径
'url' => '/storage',
// 可见性
'visibility' => 'public',
],
'photo' => [
// 磁盘类型
'type' => 'local',
// 磁盘路径
'root' => app()->getRootPath() . 'public/uploads',
// 磁盘路径对应的外部URL路径
'url' => '/uploads',
// 可见性
'visibility' => 'public',
],
],
];
使用Filesystem把上传的文件移动到指定位置
/**
* 调用disk方法
* 此时根目录为/public/uploads
* 再把文件移动至uploads下的photo文件夹里
* 文件名用md5
*/
$saveName = Filesystem::disk('photo') -> putFile('photo', $file, 'md5');
上述代码执行完毕之后会返回文件名
所以用一个变量($saveName)来接收文件名
给前端返回图片路径
/**
* Shane这里只返回从uploads开始的路径
* 可以根据自己的需求返回需要的路径
*/
exit(str_replace('\\', '', '/uploads/' . $saveName));
至此上传图片完毕
再来看下整体代码
/**
* 上传图片
*/
public function uploads_file(){
$file = request() -> file('file');
if ($file == null) {
return $this -> show(
config("status.failed"),
config("message.failed"),
'未上传图片'
);
}
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
if(!in_array($extension, array("jpeg","jpg","png"))){
return $this -> show(
config("status.failed"),
config("message.failed"),
'上传图片不合法'
);
}
$saveName = Filesystem::disk('photo') -> putFile('photo', $file, 'md5');
exit(str_replace('\\', '', '/uploads/' . $saveName));
}
Shane在B站的TP6视频:BV1tJ411J7qZ
猜你喜欢
- 2024-11-25 超强 Vue+Electron 图床上传工具PicGo
- 2024-11-25 JAVA全栈CMS系统vue图片/视频上传组件,多图上传及删除功能11
- 2024-11-25 SpringCloud+vue实现图片裁剪缩放上传
- 2024-11-25 Node.js实现将文字与图片合成技巧
- 2024-11-25 Nodejs之MEAN栈开发(四)-- form验证及图片上传
- 2024-11-25 基于业务场景下的图片/文件上传方案总结
- 2024-11-25 几行代码实现上传接口,白嫖Github做为在线图床
- 2024-11-25 我带的实习生竟然把图片直接存到了服务器上!崩溃了
- 2024-11-25 Fabric.js 将本地图像上传到画布背景
- 2024-11-25 前端JS判断上传文件是否是图片
你 发表评论:
欢迎- 599℃几个Oracle空值处理函数 oracle处理null值的函数
- 591℃Oracle分析函数之Lag和Lead()使用
- 579℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 575℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 571℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 564℃【数据统计分析】详解Oracle分组函数之CUBE
- 550℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 545℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端懒加载 (49)
- 前端获取当前时间 (50)
- 前端接口 (50)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle 中文 (51)
- oracle的函数 (57)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)