Используя TinyMCE 5.2 для загрузки изображения, JSON return вызывает неожиданную ошибку токена - PullRequest
0 голосов
/ 05 мая 2020

Я использую специально созданную 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)

Я уверен, что это проблема форматирования или что-то подобное, но если кто-то может указать мне правильное направление, я буду признателен за помощь. Если я не на базе, дайте мне знать!

Цитата

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...