分享

thinkphp6如何上传文件 上传图片?

发布于:2019-08-31 19:40    阅读次数:131    作者:云码素材    分类:行业经验    关键词:thinkphp6  

thinkphp6如何上传文件 上传图片?thinkphp6默认情况下是上传到本地服务器,会在runtime/storage目录下面生成以当前日期为子目录,以微秒时间的md5编码为文件名的文件.


一.获取表单上传文件

$file = request()->file('image');

二.上传到本地服务器

$savename = \think\facade\Filesystem::putFile( 'topic', $file);

$file变量是一个\think\File对象,你可以获取相关的文件信息,支持使用SplFileObject类的属性和方法。


默认情况下是上传到本地服务器,会在runtime/storage目录下面生成以当前日期为子目录,以微秒时间的md5编码为文件名的文件,例如上面生成的文件名可能是:

runtime/storage/topic/20160510/42a79759f284b767dfcb2a0197904287.jpg

可以在config/filesystem.php配置文件中配置上传根目录及上传规则,例如:

return [
    'default' =>  'local',
    'disks'   => [
        'local'  => [
            'type' => 'local',
            'root'   => app()->getRuntimePath() . 'storage',
        ],
        'public' => [
            'type'     => 'local',
            'root'       => app()->getRootPath() . 'public/storage',
            'url'        => '/storage',
            'visibility' => 'public',
        ],
        // 更多的磁盘配置信息
    ],
];

给大家分享一个完整的上传案例代码:

if(request()->isPost()){
            // 获取表单上传文件 例如上传了001.jpg
            $file = request()->file('fileexcel');
            $fileinfo=$this->upload($file);
}
protected function upload($file)
{
    $msg=[];
    try {
        $info=\think\facade\Filesystem::putFile( 'uploads', $file);
        $msg['code']=1;
        $msg['info']=app()->getRootPath()."runtime".DIRECTORY_SEPARATOR."storage".DIRECTORY_SEPARATOR.$info;
    } catch (\think\exception\ValidateException $e) {
        $msg['code']=0;
        $msg['info']=$e->getMessage();
    }
    return $msg;
}


推荐源码
查看更多

免费领
签到客服赚钱 反馈 回顶部