Class yii\web\MultipartFormDataParser

继承yii\web\MultipartFormDataParser » yii\base\BaseObject
实现yii\base\Configurable, yii\web\RequestParserInterface
可用自版本2.0.10
源代码 https://github.com/yiisoft/yii2/blob/master/framework/web/MultipartFormDataParser.php

MultipartFormDataParser 解析编码为multipart/form-data的内容.

此解析器为非POST请求提供了multipart/form-data处理的后备功能, 例如: 具有PUT请求方法的请求.

为了启用此解析器, 你应该通过以下方式配置 yii\web\Request::$parsers:

return [
    'components' => [
        'request' => [
            'parsers' => [
                'multipart/form-data' => 'yii\web\MultipartFormDataParser'
            ],
        ],
        // ...
    ],
    // ...
];

此解析器的 parse() 方法用从原始正文解析的文件自动填充$_FILES.

Note: 因为这是一个请求解析器, 它将在 yii\web\Request::getBodyParams() 上初始化$_FILES值. 在调用此方法之前, 即使请求主体中有已提交的文件, $_FILES数组也将保持为空. 如果你正在使用此解析器, 请确保在尝试获取上传文件之前已请求主体参数.

用法示例:

use yii\web\UploadedFile;

$restRequestData = Yii::$app->request->getBodyParams();
$uploadedFile = UploadedFile::getInstancesByName('photo');

$model = new Item();
$model->populate($restRequestData);
copy($uploadedFile->tempName, '/path/to/file/storage/photo.jpg');

Note: 尽管此解析器完全模拟了$_FILES的常规结构, 但相关的临时文件(可通过tmp_name键使用)无法被 PHP 识别为已上传的文件. 因此, 诸如is_uploaded_file()move_uploaded_file()之类的函数将会失败.

公共属性

隐藏继承的属性

属性类型描述定义在
$force boolean 是否为POST请求和已经填充的$_FILES解释原始正文. yii\web\MultipartFormDataParser
$uploadFileMaxCount integer 最大上传文件数量. yii\web\MultipartFormDataParser
$uploadFileMaxSize integer 上传文件的最大大小(以字节为单位). yii\web\MultipartFormDataParser

公共方法

隐藏继承的方法

方法描述定义在
__call() 调用不是类方法的已命名方法. yii\base\BaseObject
__construct() 构造函数. yii\base\BaseObject
__get() 返回对象属性的值. yii\base\BaseObject
__isset() 检查属性是否已设置, 即已定义且不为null. yii\base\BaseObject
__set() 设置对象属性的值. yii\base\BaseObject
__unset() 将对象属性设置为null. yii\base\BaseObject
canGetProperty() 返回一个值, 指示属性是否可读. yii\base\BaseObject
canSetProperty() 返回一个值, 指示属性是否可写. yii\base\BaseObject
className() 返回此类的完全限定名称. yii\base\BaseObject
getUploadFileMaxCount() 返回最大上传文件数. yii\web\MultipartFormDataParser
getUploadFileMaxSize() 返回上传文件的最大大小(以字节为单位). yii\web\MultipartFormDataParser
hasMethod() 返回一个值, 指示方法是否已定义. yii\base\BaseObject
hasProperty() 返回一个值, 指示属性是否已定义. yii\base\BaseObject
init() 初始化对象. yii\base\BaseObject
parse() 解析 HTTP 请求主体. yii\web\MultipartFormDataParser
setUploadFileMaxCount() 设置最大上传文件数. yii\web\MultipartFormDataParser
setUploadFileMaxSize() 设置上传文件的最大大小(以字节为单位). yii\web\MultipartFormDataParser

属性详情

$force public 属性 (可用自版本: 2.0.13)

是否为POST请求和已经填充的$_FILES解释原始正文.

默认情况下, 该选项处于禁用状态, 从而为 PHP 已自动处理的POST请求保存性能.

Note: 如果启用此选项, 则$_FILES的值将在每次解析时重置.

public boolean $force false
$uploadFileMaxCount public 属性

最大上传文件数量.

$uploadFileMaxSize public 属性

上传文件的最大大小(以字节为单位).

方法详情

getUploadFileMaxCount() public 方法

返回最大上传文件数.

public integer getUploadFileMaxCount ( )
return integer

最大上传文件数.

getUploadFileMaxSize() public 方法

返回上传文件的最大大小(以字节为单位).

public integer getUploadFileMaxSize ( )
return integer

上传文件的最大大小(以字节为单位).

parse() public 方法

解析 HTTP 请求主体.

public array parse ( $rawBody, $contentType )
$rawBody string

原始的 HTTP 请求主体.

$contentType string

为请求主体指定的内容类型.

return array

从请求主体解析的参数.

setUploadFileMaxCount() public 方法

设置最大上传文件数.

public void setUploadFileMaxCount ( $uploadFileMaxCount )
$uploadFileMaxCount integer

最大上传文件数.

setUploadFileMaxSize() public 方法

设置上传文件的最大大小(以字节为单位).

public void setUploadFileMaxSize ( $uploadFileMaxSize )
$uploadFileMaxSize integer

上传文件的最大大小(以字节为单位).