22 class FileBag
extends ParameterBag
24 private static $fileKeys = [
'error',
'name',
'size',
'tmp_name',
'type'];
37 public function replace(array $files = [])
39 $this->parameters = [];
46 public function set($key, $value)
48 if (!\is_array($value) && !$value instanceof
UploadedFile) {
49 throw new \InvalidArgumentException(
'An uploaded file must be an array or an instance of UploadedFile.');
58 public function add(array $files = [])
60 foreach ($files as $key => $file) {
61 $this->
set($key, $file);
78 if (\is_array($file)) {
80 $keys = array_keys($file);
83 if ($keys == self::$fileKeys) {
84 if (UPLOAD_ERR_NO_FILE == $file[
'error']) {
87 $file =
new UploadedFile($file[
'tmp_name'], $file[
'name'], $file[
'type'], $file[
'error'],
false);
90 $file = array_map([$this,
'convertFileInformation'], $file);
91 if (array_keys($keys) === $keys) {
92 $file = array_filter($file);
118 $keys = array_keys($data);
121 if (self::$fileKeys != $keys || !isset($data[
'name']) || !\is_array($data[
'name'])) {
126 foreach (self::$fileKeys as $k) {
130 foreach ($data[
'name'] as $key => $name) {
132 'error' => $data[
'error'][$key],
134 'type' => $data[
'type'][$key],
135 'tmp_name' => $data[
'tmp_name'][$key],
136 'size' => $data[
'size'][$key],