上传功能类库,比较简单。帝国文件管理类EapiFile.php基于此类开发。

upload

功能:上传文件

参数:

  • $file 通过表单提交的$_FILES变量
  • $filename 保存的文件名
  • $savepath 保存的文件路径

示例:

// 以上传图片为例 表单<input type="file" name="image">
$file = $_FILES['image'];
$upload = $api->load('upload' , [
    'size' => 1024*1024, // 文件大小限制 
    'rootpath' => '../d/upload/', // 上传文件的根目录
    'exts' => ['gif' , 'jpg' , 'png' , 'webp'] // 允许上传的文件后缀
]);

// 文件名为当前时间戳  文件子目录按 年/月/日 的方式自定生成
$savepath = date('Y/m/d');
$fileinfo = $upload->upload($file , time() , $savepath);

// 若上传成功,将返回以一个包含文件信息的数组。失败返回false
if($fileinfo){
    var_dump($fileinfo); //  打印数据
}else{
    var_dump($upload->getError()); //打印错误信息
}

// 成功返回的信息结构,如:
[
    'filename' => '1593095347',  // 上传后的文件名,不包含后缀
    'ext' => 'png', // 文件后缀
    'fullname' => '1593095347.png', // 包含后缀的文件名
    'original' => '1.png', // 上传之前的文件名(本地文件名称)
    'size' => 9749  // 文件大小
]

download

功能:将远程文件保存到本地

参数:

  • $url 远程文件地址
  • $filename 保存的文件名
  • $savepath 保存的文件路径

示例:

// 将 http://www.phome.net/img/logo.gif 保存到本地
$upload = $api->load('upload' , [
    'size' => 1024*1024, // 文件大小限制 
    'rootpath' => '../d/upload/', // 保存文件的根目录
    'mimes' => [
        'image/webp' => 'webp',
        'image/jpeg' => 'jpg',
        'image/gif' => 'gif',
        'image/png' => 'png'
    ]
]);

// 像帝国后台自动保存文件功能,若远程地址不是以.jpg这样后缀结尾的,将无法保存。如微信公众号里的地址:
// https://mmbiz.qpic.cn/mmbiz_jpg/HXZsE2u1DaR12vz3crAoibfUxdQBKiaKAiamibLGrN0ByvFuDsDZt9ibgnK60wZrJGENMFKxeI5V8Emyowh6a2Usj9Q/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1
// 所以下载文件时配置中请设置mimes,一是保存下载的文件安全,二是解决上面的问题。

// 文件名为当前时间戳  文件子目录按 年/月/日 的方式自定生成
$savepath = date('Y/m/d');
$fileinfo = $upload->download('http://www.phome.net/img/logo.gif' , time() , $savepath);

// 若下载成功,将返回以一个包含文件信息的数组。失败返回false
if($fileinfo){
    var_dump($fileinfo); //  打印数据
}else{
    var_dump($upload->getError()); //打印错误信息
}

getError

功能:获取错误信息

示例:

$api->load('upload')->getError(); // 之前调用过upload,此时不需要再进行配置。