validate([ 'file' => [ 'required', 'file', 'max:10000', 'mimes:doc,dot,docx,dotx,docm,dotm,odt,rtf,pdf,txt', ], ]); try { /** @var UploadedFile $file */ $file = request()->file('file'); $time = time(); $fileId = $time . '_' . pathinfo($file->getClientOriginalName(), PATHINFO_FILENAME); $sendDocument = new SendDocument(); $sendDocument->execute($fileId, [ 'path' => $file->getRealPath(), 'type' => $file->getMimeType(), 'name' => $file->getClientOriginalName() ]); return response()->json([ 'id' => $fileId, 'file_name' => $file->getClientOriginalName(), ]); } catch (BadResponseException $e) { return response()->json([ 'message' => $e->getMessage(), 'response' => $e->getResponse() ], 400); } catch (\Exception $e) { return response()->json([ 'message' => $e->getMessage(), ], 400); } } /** * */ public function convert(): JsonResponse { $mdFileContent = request()->input('content'); $tmpFileId = (string) Str::uuid(); Storage::disk('local')->put('tmp/' . $tmpFileId . '.md', $mdFileContent); $tmpMdFilePath = Storage::path('tmp/' . $tmpFileId . '.md'); $pandoc = new Process([ 'pandoc', '-f', 'markdown', '-t', 'odt', $tmpMdFilePath ]); $pandoc->start(); while ($pandoc->isRunning()) { // } $odtFileContent = $pandoc->getOutput(); Storage::disk('local')->put('tmp/' . $tmpFileId . '.odt', $odtFileContent); return response()->json([ 'path' => 'tmp/' . $tmpFileId . '.odt' ]); } /** * * @param string $path * @return mixed */ public function download(string $path) { return Storage::download($path); } }