Я использую специально созданную NET (Razor) CMS с TinyMCE 5, и я пытаюсь заставить работать встроенный Image Uploader.
Я могу выбрать изображение, и оно будет загружено в нужную папку, используя мой код, но возвращенная строка, которая требуется как JSON для размещения ее в текстовом поле, вызывает ошибку. Это не моя сильная сторона и может быть чем-то простым, но я буду очень признателен за любую помощь. Обратите внимание, что я использую Ajax для отправки общей формы, которая учитывает переменную triggerSave в файле инициализации.
Я использую параметры настройки, описанные на собственном веб-сайте Tiny здесь: https://www.tiny.cloud/docs/general-configuration-guide/upload-images/#imageuploaderoptions
Это код инициализации TinyMCE:
<script type="text/javascript" src="../Scripts/tinymce/tinymce.min.js"></script>
<script type="text/javascript">
tinyMCE.baseURL = '../scripts/tinymce';
tinymce.init({
selector: "textarea:not(.mceNoEditor)",
images_upload_url: 'functions/image-upload-tiny.cshtml',
images_upload_base_path: '../../www/images',
images_upload_credentials: true,
plugins: 'link image lists code',
toolbar: "undo redo | alignleft aligncenter alignright alignjustify | bullist removeformat | bold italic underline | link image media | code",
setup: function (editor) {
editor.on('change', function () {
tinymce.triggerSave();
});
file_picker_types: 'file image media'
},
plugin: 'a_tinymce_plugin',
a_plugin_option: true,
a_configuration_option: 400,
});
function setPlainText() {
var ed = tinyMCE.get('elm1');
ed.pasteAsPlainText = true;
//adding handlers crossbrowser
if (tinymce.isOpera || /Firefox\/2/.test(navigator.userAgent)) {
ed.onKeyDown.add(function (ed, e) {
if (((tinymce.isMac ? e.metaKey : e.ctrlKey) && e.keyCode == 86) || (e.shiftKey && e.keyCode == 45))
ed.pasteAsPlainText = true;
});
} else {
ed.onPaste.addToTop(function (ed, e) {
ed.pasteAsPlainText = true;
});
}
}
</script>
И это код загрузки, который я использую:
@{
var db = Database.Open("database");
var imgsrc = db.QueryValue("SELECT FrontendURL from Config where ID=@0", '1');
var Title = "";
int maxsize = 0;
var Image = "";
var fileName = "";
var jsonresult = "";
Title = Request.Form["title"];
if (int.TryParse(Request.Form["maxsize"], out maxsize)) { };
var folderpath = db.QuerySingle("SELECT TempDir FROM Config WHERE ID='1'");
//Image Upload
if (Request.Files[0].ContentLength > 0)
{
var fileSavePath = "";
WebImage uploadedFile = WebImage.GetImageFromRequest();
var serverPath = folderpath.TempDir;
fileName = Path.GetFileName(uploadedFile.FileName);
fileSavePath = (serverPath + fileName);
uploadedFile.Save(fileSavePath);
Image = Path.GetFileName(uploadedFile.FileName);
jsonresult = (imgsrc + "/images/" + fileName);
//End Image Upload
}
}
@Html.Raw(jsonresult);
Это возвращает результат : https://www.websitename.com/images/image.jpg
И ошибка (по-видимому, связана со вторым / после https)
VM5163:5 Uncaught SyntaxError: Unexpected token S in JSON at position 8
at JSON.parse (<anonymous>)
at XMLHttpRequest.i.onload (plugin.min.js:9)
Я уверен, что это проблема форматирования или что-то подобное, но если кто-то может указать мне правильное направление, я буду признателен за помощь. Если я не на базе, дайте мне знать!
Цитата