此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結尾 |