SamsonOS/php_upload

安装: 317

依赖: 0

建议者: 0

安全: 0

星标: 4

关注者: 3

分支: 5

公开问题: 0

语言:JavaScript

dev-master 2015-02-10 15:57 UTC

This package is not auto-updated.

Last update: 2024-09-14 14:21:17 UTC


README

Latest Stable Version Build Status Code Coverage Total Downloads Scrutinizer Code Quality Stories in Ready

连接

要在项目中使用此模块,您必须在您的 composer.json 中添加依赖项

"require": {
    "samsonos/php_upload": "*"
},

完成 composer installcomposer update 后,您将获得上传模块的所有类和函数。

配置

上传模块的配置不是必需的,但如果您想为上传文件创建唯一的文件名或上传目录名,则可以使用它。
如果您不使用配置,您的上传目录将命名为 '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 代码示例

如果您使用具有不同类的输入 "__upload",则需要处理您的输入

// 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 \samson\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;
}

要创建文件上传,您需要创建类 \samson\upload\Upload,其构造函数可以有三个参数。

  • 第一个参数是允许上传文件的文件扩展名数组。
  • 第二个是回调函数的参数数组(或只是一个参数)。如果您使用模块配置,则可以使用它。
  • 第三个是配置类。这是一个系统参数,默认值是 m('upload')。如果您正在使用简单的上传模块,则最好不要指定它。

直接创建上传的方法是 upload(& $filePath = '', & $fileName = '', & $realName = '')。您可以使用此方法的参数获取主要文件信息。

我们还可以创建在配置类中定义的回调函数

/**
* External handler for defining upload catalog
*/
function uploadDirHandler($parameter)
{
    return 'upload/catalog'.$parameter;
}

/**
*
*/
function uploadNameHandler($parameter, $extension)
{
    return 'item'.$parameter.$extension;
}

如您所见,我们在名称处理函数中有参数 $extension。此参数 始终定义为 此回调函数的最后一个参数。
在我们的情况下,在创建回调函数后,上传目录将命名为 'upload/catalog5',文件名将类似于 'item5'。
别忘了,在当前示例中,所有上传的文件都将具有简单的名称(可能具有不同的扩展名),因此 您必须想出一些逻辑来正确使用上传文件名处理程序。

SamsonOS 开发。