У меня есть веб-приложение, в котором я использую ckeditor версии 5 (ClassicEditor) для создания и настройки основного содержимого для отправки уведомлений по электронной почте. Я борюсь с загрузкой изображений. Я получаю постоянную ошибку: "Этот сайт говорит ... Не удается загрузить файл: imagename.jpg"
Идея состоит в том, что мы сохраняем изображения в базу данных в виде BLOB-объектов, а затем отображаем их
в веб-форме во время создания и редактирования, затем в качестве предварительного просмотра, и, наконец, он должен отображаться в содержании основного сообщения электронной почты, встраивая изображение в виде вложенного файла (т. е. src="cid:imageFileName"
).
Что касается неизбежного вопроса о том, почему намеревается настроить загрузку изображений как blob: Что ж, мы не используем эту функцию достаточно часто, чтобы гарантировать получение платной версии; о настройке какой-либо частной учетной записи онлайн-хостинга изображений через другого интернет-провайдера также не может быть и речи.
Так что мне нужно придумать собственное решение. Таким образом, проблема. Я не нашел примеров, которые могли бы помочь в C # MVC. Я не знаком с PHP и не знаком с другими языками программирования. Я собираю их вместе, пока иду вперед.
Что я сделал до сих пор:
- установить и использовать ckeditor 5 ( См. Инструкции по установке
здесь , затем следуйте инструкциям по загрузке Zip) Все остальные функции, кроме графических, у меня пока работают.
- install ckfinder ( См. Инструкции по установке, найденные здесь , затем следуйте разделу «Установка необходимых пакетов NuGet» и т. Д. И т. Д. И т. Д.). Чтобы установить его в Visual Studio 2017, потребовалось немного чтения между строками, поэтому настройка не совсем такая, как показано на ссылке)
- Загрузить адаптер Документация : Не уверен, куда это пойдет и на каком языке. Java Script?
- FileLoader, FileRepository, документация не уверен, как это реализовать. Разве это не часть ckeditor по умолчанию? Если это так, я предполагаю, что мне просто нужно как-то реализовать собственный адаптер загрузки.
- На данный момент 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>
Итак, мне нужна помощь:
- сохранение изображений в базу данных через пользовательский адаптер загрузки
(который вызовет метод сохранения BLOB-объекта), а затем вернет изображение
для потребления на вид)
- отображение сохраненных изображений в представлении.
- как бы я прикрепил изображения к телу электронной почты?
- Любые другие потенциальные рекомендации о том, как сохранять и отображать изображения как в веб-приложении, так и в теле сообщения электронной почты. Будет ли легче сохранить изображения в файл?
Возможно, мне лучше сохранить изображения в общей папке в сети и использовать вместо них эти файлы? Чтобы это работало, мне сначала нужно сохранить изображения для работы. Каким-то образом.