当前位置: 首页 > news >正文

thinkphp6入门(20)-- 如何上传图片、文件

1. 配置文件

设置上传的路径

图片

对应文件夹

图片

2. 前端

<div class="card-body"><h1 class="card-title">用户头像</h1><img src="../../../uploads/{$user.avatar_photo_path}" alt="avatar"  height="100"/><form class="forms-sample" action="保存路径" method="post" enctype="multipart/form-data">选择图片(最大0.5M,格式jpg,jpeg,png):<input type="file" name="user_avatar_image"/>              <button type="submit" class="btn btn-primary mr-2">上传</button></form>
</div>

3. 后端

  /*** 保存用户头像*/function do_save_user_avatar()
{// 字段名$field_name = 'user_avatar_image';if(request()->isPost()){try {// 获取表单上传文件 例如上传了001.jpg$file = request()->file($field_name);// 使用验证器验证上传的文件validate(['file' => [// 限制文件大小(单位b),这里限制为1M'fileSize' => 0.5 * 1024 * 1024,// 限制文件后缀,多个后缀以英文逗号分割'fileExt'  => 'jpg,jpeg,png']])->check(['file' => $file]);// 上传到本地服务器// public/uploads文件夹下的profile文件夹$save_name = \think\facade\Filesystem::disk('public')->putFile('profile', $file);if($save_name){// 要更新的数据库// // 上传之后的操作return  $this->success('上传成功', '跳转路径');}} catch (\Throwable $e) {return $this->error('上传图片失败,' . $e->getMessage());}}}

注意:try catch中捕捉错误,是\Throwable $e

也可单独封装出一个上传文件的函数

/*** 上传文件* $field_name = 'user_avatar_image';* $subdirectory public下的哪个子目录* $fileSize = 0.5 (单位为M)* $fileExt 文件格式字符串*/function uploadFile($field_name, $subDirectory, $fileSize = 1, $fileExt = 'jpg,jpeg,png')
{// 获取表单上传文件 例如字段名是'user_avatar_image'if(!array_key_exists($field_name, $_FILES)){$response = [];$response['code'] = 100;$response['msg'] = 'FILES中不存在该变量';$response['data'] = [];return  $response;}else{   // 变量'user_avatar_image'没有值if($_FILES[$field_name]['error'] != 0){$response = [];$response['code'] = 200;$response['msg'] = '没有上传文件';$response['data'] = [];return  $response;}}if(request()->isPost()){try {// 获取表单上传文件 例如上传了001.jpg$file = request()->file($field_name);// 使用验证器验证上传的文件validate(['file' => [// 限制文件大小(单位b),这里限制为1M'fileSize' => $fileSize * 1024 * 1024,// 限制文件后缀,多个后缀以英文逗号分割'fileExt'  => $fileExt]])->check(['file' => $file]);// 上传到本地服务器// uploads文件夹下的profile文件夹$save_name = \think\facade\Filesystem::disk('public')->putFile($subDirectory, $file);if($save_name){$response = [];$response['code'] = 1;$response['msg'] = '上传成功';$response['data'] = [];return $response;}} catch (\Throwable $e) {$response = [];$response['code'] = 300;$response['msg'] = '上传失败,' . $e->getMessage();$response['data'] = [];return $response;}}$response = [];$response['code'] = 400;$response['msg'] = '上传失败,非POST请求';$response['data'] = [];return $response;}

上传成功之后,如图

图片

by 软件工程小施同学

http://www.lryc.cn/news/299842.html

相关文章:

  • 【Linux技术宝典】深入理解Linux基本指令:命令行新手指南
  • C++:Level1阶段测试
  • autojs自动化刷视频脚本
  • 鲁南制药“健康幸福中国年”主题航班,开启探寻健康与幸福的旅程
  • CISA知识点
  • C语言求解猴子分桃子
  • 本地部署 Stable Cascade
  • LeetCode 二叉树/n叉树的解题思路
  • opencv mat用法赋值克隆的操作和一些基本属性
  • 【使用IDEA总结】01——新增作者信息、方法参数返回值
  • ElasticSearch分词器和相关性详解
  • DolphinScheduler安装与配置
  • Qt之条件变量QWaitCondition详解
  • 作为国产大模型之光的智谱AI,究竟推出了多少模型?一篇文章带你详细了解!
  • 学习转置矩阵
  • AJAX——常用请求方法
  • sqlserver2012 解决日志大的问题
  • Vue3快速上手(三)Composition组合式API及setup用法
  • 【C++】内存五大区详解
  • Django学习笔记教程全解析:初步学习Django模型,初识API,以及Django的后台管理系统(Django全解析,保姆级教程)
  • Python学习之路-爬虫提高:selenium
  • Rust基础拾遗--进阶
  • 数据同步工具对比——SeaTunnel 、DataX、Sqoop、Flume、Flink CDC
  • 随机过程及应用学习笔记(四) 马尔可夫过程
  • prometheus
  • Vi 和 Vim 编辑器
  • 算法沉淀——队列+宽度优先搜索(BFS)(leetcode真题剖析)
  • 编辑器的新选择(基本不用配置)
  • 算法沉淀——栈(leetcode真题剖析)
  • 耳机壳UV树脂制作私模定制耳塞需要注意什么问题?