坑爹现象
使用Thinkphp3.2自带的Ftp类上传文件的时候出现只能创建目录而不能上传文件,上传文件出错,上传文件超时等现象
Ftp.class.php
这个类是用来操作Ftp的,也是Thinkphp3.2自带的一个类
所以。。因为框架自带那就用框架自带的咯!
代码语言:javascript复制$config = array(
'maxSize' => 3145728,
'rootPath' => './Uploads/',
'savePath' => '',
'pasv'=>true,
'ssl'=>false,
'saveName' => 'time',
'exts' => array('jpg', 'gif', 'png', 'jpeg'),
'autoSub' => true,
'subName' => array('date','Ymd'),
);
$ftpConfig = array(
'host' => 'xxx',
'port' => '21',
'timeout' => 90,
'username' => 'xxx',
'password' => 'xxx'
);
填写完所需的参数后我们来new一个upload出来吧!并且指定上传驱动使用Ftp
$upload = new Upload($config,'Ftp',$ftpConfig);
之后再调用一下upload对象的上传方法uploadOne方法来上传一个文件
如果你的Ftp服务器配置了需要被动模式的话那么不出意外你会上传失败
因为Thinkphp自带的Ftp类里面缺少了被动模式的配置,我们需要手动给他添加一下
打开Thinkphp/Library/Think/Upload/Ftp.class.php这个文件
然后我们找到他的login方法,之后在if (ftp_login($this->link, $username, $password))</code>这个条件成立的时候我们给他开启被动模式<code>ftp_pasv($this->link,true);
然后我们再去测试一下,不出意外的话你就已经可以上传成功啦!
希望这个解决办法给同样需要用到这个类的同学一点帮助!