此webserver的文件上传和普通的文件上传有些出入,主要区别为:
WorkerMan的$_FILES结构与传统PHP中的$_FILES结构不同,WorkerMan中$_FILES结构类似
```
var_export($_FILES);
array(
0 => array(
'file_name' => 'logo.png', // 文件名称
'file_size' => 23654, // 文件大小
'file_data' => '*****', // 文件的二进制数据
),
1 => array(
'file_name' => 'file.tar.gz', // 文件名称
'file_size' => 128966, // 文件大小
'file_data' => '*****', // 文件的二进制数据
),
...
);
```
保存文件代码类似
```
// 例如保存到/tmp目录下
foreach($_FILES as $file_info)
{
file_put_contents('/tmp/'.$file_info['file_name'], $file_info['file_data']);
}
```
WorkerMan中无法使用move_uploaded_file() is_uploaded_file()这些函数。
*****
本框架集成了一个文件上传基类,可以很方便的调用
调用示例:
```
$uplod = new \workerWeb\web\FileUpload();//声明文件上传类
$uplod->set('path', 'public/uploads/files');//指定上传目录,相对于webApp目录
$uplod->set('maxsize','20M');//设置上传文件最大限制
$uplod->set('allowtype',['gif', 'jpg', 'jpeg', 'bmp', 'png', 'swf']);//允许上传类型设置;
//上传文件和获取文件名(如果上传多个请循环调用)
$uplod->upload($_FILES[0]);//执行上传文件操作
var_dump($uplod->getFileName());//获取上传的文件名
```
文件上传类支持一些定义属性,定义方式为调用set方法`$upload->set('属性名','属性值');`
支持属性:
| 属性名 | 类型 | 说明|
|---|---|---|
| path | string |文件存储目录,相对于webApp目录 |
| allowtype | array | 设置允许上传文件的后缀 为空表示所有 默认为常见的图片类型 |
|notype| array | 设置限制上传文件的后缀 为空表示无限制 默认为['php','html','js','css','htm'] |
|maxsize | string | 限制上传大小 以 k、m、g、t结尾 |