Symfony 4.4 - редактор Summernote загружает изображения base64 на сервер - PullRequest
0 голосов
/ 24 марта 2020

Довольно распространенная проблема с большим количеством ответов здесь, но не может заставить его работать для моего Symfony 4 приложения. Я попытался отладить свое действие с помощью dump () и d ie (), оно даже не входит в действие, и я думаю, именно поэтому мои изображения не будут загружаться.

My JavaScript код в Twig:

<script>
    var url = "{{ path('editor_file_upload') }}";
    $(document).ready(function() {
        $('.summernote').summernote({
            onImageUpload: function(files, editor, welEditable) {
                sendFile(files[0], editor, welEditable);
            }
        });
        function sendFile(file, editor, welEditable) {
            let formData = new FormData();
            formData.append("file", file);
            $.ajax({
                data: formData,
                type: "POST",
                url: url,
                cache: false,
                contentType: false,
                processData: false,
                success: function(url) {
                    editor.insertImage(welEditable, url);
                }
            });
        }
    });
</script>

Действие My Controller:

/**
 * @Route("/editor-file-upload", name="editor_file_upload")
 */
public function uploadEditorFile(Request $request)
{
    /** @var UploadedFile $File */
    $File = $request->files->get('file');

    if ($File) {
        $originalFilename = pathinfo($File->getClientOriginalName(), PATHINFO_FILENAME);

        $safeFilename = transliterator_transliterate('Any-Latin; Latin-ASCII; [^A-Za-z0-9_] remove; Lower()', $originalFilename);
        $newFilename = $safeFilename . '-' . uniqid() . '.' . $File->guessExtension();

        try {
            $File->move(
                $this->getParameter('editor_images'),
                $newFilename
            );
        } catch (FileException $e) {
            // ... handle exception if something happens during file upload
        }
    }
}

1 Ответ

0 голосов
/ 29 марта 2020

Проблема была в том, что я не вернул никакого ответа, вот правка:

/**
 * @Route("/upload-editor", name="admin_upload_editor")
 */
public function uploadEditorFile(Request $request, KernelInterface $kernel) {
    /** @var UploadedFile $file */
    $file = $request->files->get('img');
    if (empty($file))
    {
        return new Response("No file",Response::HTTP_UNPROCESSABLE_ENTITY, ['content-type' => 'text/plain']);
    }

    if ($file) {
        $originalFilename = pathinfo($file->getClientOriginalName(), PATHINFO_FILENAME);
        $safeFilename = transliterator_transliterate('Any-Latin; Latin-ASCII; [^A-Za-z0-9_] remove; Lower()', $originalFilename);
        $newFilename = $safeFilename . '-' . uniqid() . '.' . $file->guessExtension();
        try {
            $file->move(
                $kernel->getProjectDir() . '/' .
                    $this->getParameter('public_dir') . '/' .
                    $this->getParameter('editor_dir'),
                $newFilename
            );
            return new Response("/editor_images/" . $newFilename, Response::HTTP_OK);
        } catch (FileException $e) {
            return new Response("Cannot upload file!",Response::HTTP_UNPROCESSABLE_ENTITY, ['content-type' => 'text/plain']);
        }
    }
}
...