loadFiles()方法,把$_FILES中的键值作为参数传递到loadFilesRecursive($key, $names, $tempNames, $types, $sizes, $errors) 中
/**
* Creates UploadedFile instances from $_FILE.
* @return array the UploadedFile instances
*/
private static function loadFiles()
{
if (self::$_files === null) {
self::$_files = [];
if (isset($_FILES) && is_array($_FILES)) {
foreach ($_FILES as $class => $info) {
self::loadFilesRecursive($class, $info['name'], $info['tmp_name'], $info['type'], $info['size'], $info['error']);
}
}
}
return self::$_files;
}
loadFilesRecursive方法,通过递归把$_FILES中的内容保存到 self::$_files 中
/**
* Creates UploadedFile instances from $_FILE recursively.
* @param string $key key for identifying uploaded file: class name and sub-array indexes
* @param mixed $names file names provided by PHP
* @param mixed $tempNames temporary file names provided by PHP
* @param mixed $types file types provided by PHP
* @param mixed $sizes file sizes provided by PHP
* @param mixed $errors uploading issues provided by PHP
*/
private static function loadFilesRecursive($key, $names, $tempNames, $types, $sizes, $errors)
{
if (is_array($names)) {
foreach ($names as $i => $name) {
self::loadFilesRecursive($key . '[' . $i . ']', $name, $tempNames[$i], $types[$i], $sizes[$i], $errors[$i]);
}
} elseif ($errors !== UPLOAD_ERR_NO_FILE) {
self::$_files[$key] = new static([
'name' => $names,
'tempName' => $tempNames,
'type' => $types,
'size' => $sizes,
'error' => $errors,
]);
}
}
实例:
html
<form class="form-horizontal form-margin50" action="<?= yiihelpersUrl::toRoute('upload-face') ?>"
method="post" enctype="multipart/form-data" id="form1">
<input type="hidden" name="_csrf" value="<?= Yii::$app->request->getCsrfToken() ?>">
<input type="file" name="head_pic" id="doc" style="display: none" onchange="setImagePreview()"/>
</form>
php代码,打印的
public static function uploadImage($userId = '', $tem = '')
{
$returnPath = '';
$path = 'uploads/headpic/' . $userId;
if (!file_exists($path)) {
mkdir($path, 0777);
chmod($path, 0777);
}
$patch = $path . '/' . date("YmdHis") . '_';
$tmp = UploadedFile::getInstanceByName('head_pic');
if ($tmp) {
$patch = $path . '/' . date("YmdHis") . '_';
$tmp->saveAs($patch . '1.jpg');
$returnPath .= $patch;
}
return $returnPath;
}
打印dump($tmp,$_FILES,$tmp->getExtension());

对应的 UploadedFile







