上传功能类库,比较简单。帝国文件管理类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,此时不需要再进行配置。