/**
* uploadFile
*
* @param string $mediaDir
* @param Request $request
* @throws HttpException
*
* @return string
*/
public static function uploadFile($mediaDir, Request $request)
{
$uploadedFile = null;
if ($request->files->get('file')) {
/** @var \Symfony\Component\HttpFoundation\File\UploadedFile $fileFromFileBag */
$fileFromFileBag = $request->files->get('file');
$uploadedFile = array('name' => $fileFromFileBag->getClientOriginalName(), 'type' => $fileFromFileBag->getMimeType(), 'tmp_name' => $fileFromFileBag->getPathname(), 'error' => $fileFromFileBag->getError(), 'size' => $fileFromFileBag->getSize());
}
$config = new FlowConfig();
$config->setTempDir($mediaDir);
$flowRequest = new FlowRequest($request->request->all(), $uploadedFile);
$flowFile = new FlowFile($config, $flowRequest);
if ($request->getMethod() === 'GET') {
if ($flowFile->checkChunk()) {
header("HTTP/1.1 200 Ok");
} else {
header("HTTP/1.1 204 No Content");
return false;
}
} else {
if ($flowFile->validateChunk()) {
rename($uploadedFile['tmp_name'], $flowFile->getChunkPath($flowRequest->getCurrentChunkNumber()));
} else {
throw new HttpException(400);
}
}
$filename = $mediaDir . '/' . $uploadedFile['name'];
if ($flowFile->validateFile() && $flowFile->save($filename)) {
return $filename;
} else {
// This is not a final chunk, continue to upload
}
return false;
}