TinyMCE: переименование файла изображения перед загрузкой - PullRequest
0 голосов
/ 30 апреля 2020

Я боролся с этим.

У меня настроен tinyMCE, чтобы пользователи могли загружать изображения, у меня images_reuse_filename установлено в true, у меня есть пользовательский images_upload_handler, и я для images_reuse_filename установлено значение true.

В моем пользовательском обработчике загрузки я console.dir blobInfo (обработчик загрузки имеет подпись (blobInfo, success, failure), которую, я думаю, я получил из документов)

Проблема в том, что blobInfo.filename - это функция, которую я не вижу, чтобы установить имя файла. enter image description here

Я использую tinyMCE, чтобы пользователи могли для создания шаблонов электронной почты, и я полагаю, что они захотят использовать некоторые изображения, такие как логотипы, заголовки, во многих шаблонах.

Когда страница загружается, я заполняю image_list их существующими изображениями.

Проблема, конечно, в том, что blobid1587911717487.png не имеет смысла для пользователя. И я не хочу тратить пространство моей базы данных на постороннюю таблицу для хранения title для tinyMCE.

Что я хочу сделать, это захватить оригинальное имя файла, проверить его по функции validFilenameChars, затем представьте имя файла пользователю на тот случай, если он / она захочет его изменить, затем передайте его дальше вниз по поезду в images_upload_handler.

О, и мне нужно разобраться, когда пользователь изменит размер изображения .

Я бы включил код, но задница - это боль, чтобы лишить код несоответствующего кода, чтобы представить суть проблемы, и, если вы близко знакомы с tinyMCE, я считаю, Вы знаете, о чем я говорю, и вам не нужен мой код.

Если вы думаете / знаете, что можете понять его и хотите получить код, позвольте мне знать.

Я потратил непомерное количество времени, пытаясь это выяснить, любая помощь будет оценена.

Я использую Version: 5.2.1 tinyMCE

Кроме того, tinyMCE является довольно мощным бесплатный html редактор, я чувствую, что ищу подарок Говоря во рту, сказав это, но все кончено? Как они упустили тот факт, что пользователь будет загружать изображения, которые затем будут включены в его image_list, и, возможно, им нужны разумные имена? Это только я? Может быть. TinyMCE для меня во многом черный ящик, так что не знаю их внутренних решений. Итак ... если вам известен другой редактор html, который можно использовать вместо tinyMCE с открытым исходным кодом, позвольте мне знать.

Кроме того, отличная работа над новыми документами tinyMCE! Люблю их.

1 Ответ

0 голосов
/ 01 мая 2020

Я разобрался в хакерской атаке, требующей 2 сообщения на сервер: одна загружает изображение, а затем - другая, которая переименует файл на сервере. Затем я передаю новое местоположение в функцию success. Мой код тоже немного хакерский, но я только после доказательства концепции.

function (blobInfo, success, failure) {
    var self = this;
    var xhr = new XMLHttpRequest();

    xhr.withCredentials = false;
    xhr.open('POST', self.imagesUploadUrl);

    xhr.onload = function () {

        var json = JSON.parse(xhr.responseText);

        // I have a DTO on the server that separates out the filename
            from the path and file extension
        var filename = prompt('If you plan on reusing this image in other templates, rename the file so that it\'s easily recognizable in your images list', json.filename);

        if (filename && filename !== json.filename) {
            json.filename = filename;

            axios.post(self.imageRenameUrl, json)
                .then(function (r) {
                    var renamedImage = r.data;
                    success(renamedImage.location);
                })
        }
        else {
            success(filename);
        }
    };

    var formData = new FormData();
    formData.append('file', blobInfo.blob(), blobInfo.filename());

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