|
9 | 9 | use PHPPM\Utils;
|
10 | 10 | use Psr\Http\Message\ServerRequestInterface;
|
11 | 11 | use Psr\Http\Message\ResponseInterface;
|
| 12 | +use Psr\Http\Message\UploadedFileInterface; |
12 | 13 | use RingCentral\Psr7;
|
13 | 14 | use Symfony\Component\HttpFoundation\Cookie;
|
| 15 | +use Symfony\Component\HttpFoundation\File\UploadedFile as SymfonyFile; |
14 | 16 | use Symfony\Component\HttpFoundation\Request as SymfonyRequest;
|
15 | 17 | use Symfony\Component\HttpFoundation\Response as SymfonyResponse;
|
16 | 18 | use Symfony\Component\HttpFoundation\StreamedResponse as SymfonyStreamedResponse;
|
17 | 19 | use Symfony\Component\HttpKernel\TerminableInterface;
|
18 | 20 |
|
| 21 | + |
19 | 22 | class HttpKernel implements BridgeInterface
|
20 | 23 | {
|
21 | 24 | /**
|
@@ -152,22 +155,28 @@ protected function mapRequest(ServerRequestInterface $psrRequest)
|
152 | 155 | $uploadedFiles = $psrRequest->getUploadedFiles();
|
153 | 156 |
|
154 | 157 | $mapFiles = function(&$files) use (&$mapFiles) {
|
155 |
| - foreach ($files as &$value) { |
156 |
| - if (is_array($value)) { |
157 |
| - $mapFiles($value); |
158 |
| - } else if ($value instanceof \React\Http\Io\UploadedFile) { |
| 158 | + foreach ($files as &$file) { |
| 159 | + if (is_array($file)) { |
| 160 | + $mapFiles($file); |
| 161 | + } else if ($file instanceof UploadedFileInterface) { |
159 | 162 | $tmpname = tempnam(sys_get_temp_dir(), 'upload');
|
160 | 163 | $this->tempFiles[] = $tmpname;
|
161 | 164 |
|
162 |
| - file_put_contents($tmpname, (string)$value->getStream()); |
163 |
| - $value = new \Symfony\Component\HttpFoundation\File\UploadedFile( |
164 |
| - $tmpname, |
165 |
| - $value->getClientFilename(), |
166 |
| - $value->getClientMediaType(), |
167 |
| - $value->getSize(), |
168 |
| - $value->getError(), |
169 |
| - true |
170 |
| - ); |
| 165 | + if (UPLOAD_ERR_NO_FILE == $file->getError()) { |
| 166 | + $file = null; |
| 167 | + } else { |
| 168 | + if (UPLOAD_ERR_OK == $file->getError()) { |
| 169 | + file_put_contents($tmpname, (string)$file->getStream()); |
| 170 | + } |
| 171 | + $file = new SymfonyFile( |
| 172 | + $tmpname, |
| 173 | + $file->getClientFilename(), |
| 174 | + $file->getClientMediaType(), |
| 175 | + $file->getSize(), |
| 176 | + $file->getError(), |
| 177 | + true |
| 178 | + ); |
| 179 | + } |
171 | 180 | }
|
172 | 181 | }
|
173 | 182 | };
|
|
0 commit comments