关于thinkPHP 上传文件问题.. 略坑

在使用ThinkPHP 3.2.3版本进行头像上传时,由于Nginx配置导致静态资源查找路径错误。尝试修改上传根目录未生效,经过清除缓存、重启浏览器等操作仍无法解决问题。最后发现在ThinkPHP的官方BUG页面找到答案,原因是已实例化的上传类修改根目录无效,需通过配置文件参数设置。采取正确方法后,头像上传和显示正常,问题得以解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

thinkPHP版本 3.2.3
服务器: Nginx
环境:centOS

描述

在做头像上传的时候,上传的根目录 默认是/Uploads/.

但由于之前修改过Nginx的配置,当访问的是静态资源的时候,

直接去/Public/Home/ 下查找.

于是就要修改默认路径.

那么问题来了,根据手册一般的方法是:

$upload -> maxsize = 3145728; //设置最大字节
$upload -> exts = array('jpg', 'jpeg', 'gif', 'png');//限定后缀
$upload -> saveName = $_SESSION['user_id'];    //每个人的头像是唯一的 用ID标志
$upload -> replace = true;//设置同名覆盖
$upload -> autoSub = false; //不根据日期再设置子目录
$upload -> rootPath  = './Public/Home/'; // 设置附件上传根目录
$upload -> savePath = './headImgs/';

运行发现没有效果,
想了想可能是缓存问题.

于是,清除缓存,重启浏览器.

还是没有效果.

以为是自己写错,遂查手册,发现无误.

苦思冥想无果,遂百度.

于是在
http://www.thinkphp.cn/bug/2732.html,找到了原因.

原来是thinkPHP自身的BUG,已经实例化上传类后,再进行修改上传根目录,会无效化.

必须用配置文件传递参数的方法来实例化上传类.

解决方案:

 $config = array(
            'maxsize' => 3145728,
            'exts' => array('jpg', 'jpeg', 'gif', 'png'),
            'saveName' => $_SESSION['user_id'],
            'replace' => true,
            'autoSub' => false,
            'rootPath' => './Public/Home/',
            'savePath' => './HeadImgs/'
        );

 $upload = new Upload($config); //实例化上传类

重新登录,注册,上传头像,查看数据库,发现路径终于对了.

刷新页面,退出,重新登录.

发现头像成功显示.

问题解决.

浪费时间 : 一下午.

以上.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值