TP6框架上传图片 仅作为优雅的飞鸟个人笔记PS:
仅作为优雅的飞鸟个人笔记 以下代码中出现的show方法均为优雅的飞鸟写的用来返回统一数据的接口方法
接收文件
/** * 接收文件 */$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',], 这里优雅的飞鸟配置的路径为public下的uploads文件夹配置完后来看下filesystem.php整体是个什么样子 <?phpuse thinkfacadeEnv;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)来接收文件名给前端返回图片路径
/** * 优雅的飞鸟这里只返回从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)); } PS:给微信小程序做接口用exit(防止后续返回html标签),给普通web返回接口用统一接口返回方法即可
优雅的飞鸟在B站的TP6视频
用ThinkPHP6制作后台