samsonphp / upload
Requires
- samsonos/js_core: *
- samsonos/php_core: 1.*
- samsonphp/fs: 1.*
Requires (Dev)
- phpunit/phpunit: 4.2.*
This package is not auto-updated.
Last update: 2024-09-24 03:08:10 UTC
README
连接
要在您的项目中使用此模块,您必须在 composer.json
中添加依赖项
"require": { "samsonphp/upload": "1.*" },
执行 composer install
或 composer update
后,您将获得 Upload 模块的所有类和函数。
配置
Upload 模块的配置不是必需的,但如果您想为上传文件创建唯一的文件名或上传目录名,则可以使用它。
如果您不使用配置,您的上传目录将被命名为 'upload',文件名将随机生成。
感谢 SamsonPHP 模块/服务配置,您可以创建简单的配置类
class UploadConfig extends \samson\core\Config { // Callback function for creating upload dir public $uploadDirHandler = 'uploadDirHandler'; // Callback function for creating file name public $fileNameHandler = 'uploadNameHandler'; }
创建异步文件上传
当前模块的主要功能是异步文件上传。请看下面的示例。
HTML 代码示例
首先,您需要创建包含您的文件输入的 HTML 容器
<p> <input type="hidden" class="__action" value="<?php url_base('catalog/upload'); ?>"> <input type="hidden" class="__file_size" value="50000000"> <input class="__example_upload" type="file" name="uploadFile"> </p>
- 具有类 "__action" 的输入定义了您的上传处理程序。它可以是在您的包中的控制器方法或简单的控制器函数。它始终必须具有类 "__action"。
- 具有类 "__file_size" 的输入定义了上传文件的最大大小。它始终必须具有类 "__file_size"。
- 具有类 "__example_upload" 的输入按钮用于从客户端计算机中选择文件。如果您为此输入使用类名 "__upload",则不需要创建任何 JavaScript 代码即可使一切正常工作。
您还可以添加以下功能块
- 具有类 "__progress_text" 的容器将显示文件上传的百分比。
- 具有类 "__progress_bar" 的容器内的段落标签将创建上传进度条的动画。
请记住,您必须为这些块添加一些 CSS 样式才能按需使用它们。
JavaScript 代码示例
如果您使用具有不同类的输入,则需要处理您的输入
// Cache file input var file = s('.__example_upload'); // Bind upload event uploadFileHandler(file, { // Handle event before file uploading start: function () { alert('Uploading started'); }, // Handle event after upload finishing response: function (response) { alert('Uploading finished'); } });
函数 uploadFileHandler(file, options)
的第二个参数不是必需的,您可以使用它在上传文件时创建一些特殊的东西。
上传处理程序示例
我们 HTML 示例中的服务器操作是控制器 'catalog/upload'。让我们创建此函数
function catalog_async_upload() { // Parameter for callback functions $parameter = 5; // Create AJAX response array $json = array('status' => 0); // Create object for uploading file to server $upload = new \samsonphp\upload\Upload(array('png','jpg'), $parameter); if ($upload->upload($filePath, $fileName, $realName) { $json['status'] = 1; // Add full path to uploaded file into AJAX response $json['filePath'] = $filePath; // Add uploaded file name into AJAX response $json['fileName'] = $fileName; // Add real file name (user's file name) into AJAX response $json['realName'] = $realName; } return $json; }
要创建文件上传,您需要创建类 \samsonphp\upload\Upload,其构造函数可以有三个参数。
- 第一个参数是上传文件允许的文件扩展名数组。
- 第二个是回调函数的参数数组(或仅一个参数)。如果使用模块配置,则可以使用它。
- 第三个是配置类。这是系统参数,默认值是 m('upload')。如果您正在处理简单的上传模块,则最好不指定它。
直接创建上传的方法是 upload(& $filePath = '', & $fileName = '', & $realName = '')
。您可以使用此方法的方法参数获取主要文件信息。
我们还可以创建配置类中定义的回调函数
/** * External handler for defining upload catalog */ function uploadDirHandler($parameter) { return 'upload/catalog'.$parameter; } /** * External handler for defining upload file name */ function uploadNameHandler($parameter, $extension) { return 'item'.$parameter.$extension; }
如您所见,我们的名称处理函数中有参数 $extension
。此参数始终定义为此回调函数的最后一个参数。
在我们的例子中,在创建回调函数之后,上传目录将被命名为 'upload/catalog5',文件名将是 'item5'。
不要忘记,在当前示例中,所有上传的文件都将具有简单名称(可能有不同的扩展名),因此您必须为正确使用上传文件名处理器想出一些逻辑。
由 SamsonOS 开发。