繁体   English   中英

Symfony 4.4 - Summernote 编辑器将 base64 图像上传到服务器

[英]Symfony 4.4 - Summernote editor upload base64 images to server

这里有很多答案,这是一个很常见的问题,但无法使其适用于我的 Symfony 4 应用程序。 我试图用 dump() 和 die() 调试我的动作,它甚至没有进入动作,我认为这就是我的图像无法上传的原因。

我在 Twig 中的 JavaScript 代码:

<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>

我的控制器操作:

/**
 * @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
        }
    }
}

问题是我没有返回任何回复,这是编辑:

/**
 * @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']);
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM