ckeditor, загрузка изображения ckfinder в базу данных в виде блоба - PullRequest
0 голосов
/ 31 октября 2018

У меня есть веб-приложение, в котором я использую ckeditor версии 5 (ClassicEditor) для создания и настройки основного содержимого для отправки уведомлений по электронной почте. Я борюсь с загрузкой изображений. Я получаю постоянную ошибку: "Этот сайт говорит ... Не удается загрузить файл: imagename.jpg"

Идея состоит в том, что мы сохраняем изображения в базу данных в виде BLOB-объектов, а затем отображаем их в веб-форме во время создания и редактирования, затем в качестве предварительного просмотра, и, наконец, он должен отображаться в содержании основного сообщения электронной почты, встраивая изображение в виде вложенного файла (т. е. src="cid:imageFileName").

Что касается неизбежного вопроса о том, почему намеревается настроить загрузку изображений как blob: Что ж, мы не используем эту функцию достаточно часто, чтобы гарантировать получение платной версии; о настройке какой-либо частной учетной записи онлайн-хостинга изображений через другого интернет-провайдера также не может быть и речи.

Так что мне нужно придумать собственное решение. Таким образом, проблема. Я не нашел примеров, которые могли бы помочь в C # MVC. Я не знаком с PHP и не знаком с другими языками программирования. Я собираю их вместе, пока иду вперед.

Что я сделал до сих пор:

  1. установить и использовать ckeditor 5 ( См. Инструкции по установке здесь , затем следуйте инструкциям по загрузке Zip) Все остальные функции, кроме графических, у меня пока работают.
  2. install ckfinder ( См. Инструкции по установке, найденные здесь , затем следуйте разделу «Установка необходимых пакетов NuGet» и т. Д. И т. Д. И т. Д.). Чтобы установить его в Visual Studio 2017, потребовалось немного чтения между строками, поэтому настройка не совсем такая, как показано на ссылке)
  3. Загрузить адаптер Документация : Не уверен, куда это пойдет и на каком языке. Java Script?
  4. FileLoader, FileRepository, документация не уверен, как это реализовать. Разве это не часть ckeditor по умолчанию? Если это так, я предполагаю, что мне просто нужно как-то реализовать собственный адаптер загрузки.
  5. На данный момент HTML сохраняется в форме, кроме процесса загрузки изображения.

Использование пункта 2 - другое дело. Мне пока не удалось заставить его работать. Мне нужно создать адаптер загрузки. Понятия не имею, с чего начать.

Мой раздел кода в представлении (если вы игнорируете настройку uploadUrl для ckfinder, пока не знаете, как это работает):

<div class="form-group">
        @Html.LabelFor(model => model.NotificationMessage, htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.TextAreaFor(model => model.NotificationMessage, 15, 300, new { htmlAttributes = new { @class = "form-control" } })
            @Html.ValidationMessageFor(model => model.NotificationMessage, "", new { @class = "text-danger" })
        </div>
    </div>
    <script type="text/javascript">
        // Rich Text Editor (CKEditor) Configuration
        ClassicEditor
            .create(document.querySelector('#NotificationMessage'), {
                ckfinder: {
                    uploadUrl: '~/ckfinder/connector?command=QuickUpload&type=Files&responseType=json'
                }
            })
            .then(editor => {
                console.log(editor);
            })
            .catch(error => {
                console.error(error);
            });
    </script>

Итак, мне нужна помощь:

  1. сохранение изображений в базу данных через пользовательский адаптер загрузки (который вызовет метод сохранения BLOB-объекта), а затем вернет изображение для потребления на вид)
  2. отображение сохраненных изображений в представлении.
  3. как бы я прикрепил изображения к телу электронной почты?
  4. Любые другие потенциальные рекомендации о том, как сохранять и отображать изображения как в веб-приложении, так и в теле сообщения электронной почты. Будет ли легче сохранить изображения в файл?

Возможно, мне лучше сохранить изображения в общей папке в сети и использовать вместо них эти файлы? Чтобы это работало, мне сначала нужно сохранить изображения для работы. Каким-то образом.

...