public function upload(UploadedFile $uploaded, $path, $name = null, $disk = null, UserInterface $user = null)
{
if ($uploaded->isValid() === false) {
throw new InvalidFileException(['name' => $uploaded->getClientOriginalName(), 'detail' => $uploaded->getErrorMessage()]);
}
$id = $this->keygen->generate();
$name = $name ?: $this->makeFilename($uploaded->getClientOriginalName());
$path = $this->makePath($id, $path);
$disk = $disk ?: $this->distributor->allot($uploaded);
$user = $user ?: $this->auth->user();
if (!$this->files->store(file_get_contents($uploaded->getPathname()), $path . '/' . $name, $disk)) {
throw new WritingFailException();
}
$file = $this->createModel();
$file->id = $id;
$file->userId = $user->getId();
$file->disk = $disk;
$file->path = $path;
$file->filename = $name;
$file->clientname = $uploaded->getClientOriginalName();
$file->mime = $uploaded->getMimeType();
$file->size = $uploaded->getSize();
$file->save();
return $file;
}