in functions/http_form_data/index.php [24:57]
function uploadFile(ServerRequestInterface $request): ResponseInterface
{
if ($request->getMethod() != 'POST') {
return new Response(405, [], 'Method Not Allowed: expected POST, found ' . $request->getMethod());
}
$contentType = $request->getHeader('Content-Type')[0];
if (strpos($contentType, 'multipart/form-data') !== 0) {
return new Response(400, [], 'Bad Request: content of type "multipart/form-data" not provided, found ' . $contentType);
}
$fileList = [];
/** @var $file Psr\Http\Message\UploadedFileInterface */
foreach ($request->getUploadedFiles() as $name => $file) {
// Use caution when trusting the client-provided filename:
// https://owasp.org/www-community/vulnerabilities/Unrestricted_File_Upload
$fileList[] = $file->getClientFilename();
infoLog('Processing ' . $file->getClientFilename());
$filename = tempnam(sys_get_temp_dir(), $name . '.') . '-' . $file->getClientFilename();
// Use $file->getStream() to process the file contents in ways other than a direct "file save".
infoLog('Saving to ' . $filename);
$file->moveTo($filename);
}
if (empty($fileList)) {
$msg = 'Bad Request: no files sent for upload';
errorLog($msg);
return new Response(400, [], $msg);
}
return new Response(201, [], 'Saved ' . join(', ', $fileList));
}