3 namespace BookStack\Exports;
5 use BookStack\Exceptions\ZipValidationException;
6 use BookStack\Exports\ZipExports\ZipExportReader;
7 use BookStack\Exports\ZipExports\ZipExportValidator;
8 use BookStack\Uploads\FileStorage;
9 use Symfony\Component\HttpFoundation\File\UploadedFile;
13 public function __construct(
14 protected FileStorage $storage,
18 public function storeFromUpload(UploadedFile $file): Import
20 $zipPath = $file->getRealPath();
22 $errors = (new ZipExportValidator($zipPath))->validate();
24 throw new ZipValidationException($errors);
27 $zipEntityInfo = (new ZipExportReader($zipPath))->getEntityInfo();
28 $import = new Import();
29 $import->name = $zipEntityInfo['name'];
30 $import->book_count = $zipEntityInfo['book_count'];
31 $import->chapter_count = $zipEntityInfo['chapter_count'];
32 $import->page_count = $zipEntityInfo['page_count'];
33 $import->created_by = user()->id;
34 $import->size = filesize($zipPath);
36 $path = $this->storage->uploadFile(
38 'uploads/files/imports/',
43 $import->path = $path;