javascript - TinyMCE上传音频/视频/图像/文件

标签 javascript php jquery html tinymce

我需要将所有功能添加到 TinyMCE Editor,并且我希望允许上传文件、音频/视频和图像。

图像上传工作正常,但其他文件有问题。 我到处都有选择器,但文件没有发送到 php。

enter image description here

我不明白如何继续处理音频/视频文件。 基本上如何将 FILE 发送到我的 PHP 处理程序并获取保存文件的 url(我使用 TinyMCE 文档中的 PHP 处理程序)。

tinyMCE.init({
    selector: '.tinyMCE-content-full',
    height: 400,
    theme: 'modern',
    plugins: [
    'advlist autolink lists link image charmap print preview hr anchor pagebreak',
    'searchreplace wordcount visualblocks visualchars code fullscreen',
    'insertdatetime media nonbreaking save table contextmenu directionality',
    'emoticons template paste textcolor colorpicker textpattern imagetools codesample toc help image code'
    ],
    toolbar1: 'undo redo | insert | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image | fontsizeselect',
    toolbar2: 'print preview media | forecolor backcolor emoticons | codesample help',

    fontsize_formats: '8pt 10pt 12pt 14pt 18pt 24pt 36pt',
    image_advtab: true,
    file_picker_types: 'file image media',
    images_upload_handler: function (blobInfo, success, failure) {
        var xhr, formData;
        xhr = new XMLHttpRequest();
        xhr.withCredentials = false;
        xhr.open('POST', '/clients/tinymceFileUpload');
        var token = $('[name="csrf-token"]').prop('content');
        xhr.setRequestHeader("X-CSRF-Token", token);
        xhr.onload = function() {
            var json;
            if (xhr.status != 200) {
                failure('HTTP Error: ' + xhr.status);
                return;
            }
            json = JSON.parse(xhr.responseText);

            if (!json || typeof json.location != 'string') {
                failure('Invalid JSON: ' + xhr.responseText);
                return;
            }
            success(json.location);
        };
        formData = new FormData();
        formData.append('file', blobInfo.blob(), blobInfo.filename());
        xhr.send(formData);
    },
    file_picker_callback: function(cb, value, meta) {
        var input = document.createElement('input');
        input.setAttribute('type', 'file');
        input.setAttribute('accept', 'image/* audio/* video/*');
        input.onchange = function() {
            var file = this.files[0];

            var reader = new FileReader();
            reader.readAsDataURL(file);
            reader.onload = function () {
                var id = 'blobid' + (new Date()).getTime();
                var blobCache =  tinymce.activeEditor.editorUpload.blobCache;
                var base64 = reader.result.split(',')[1];
                var blobInfo = blobCache.create(id, file, base64);
                blobCache.add(blobInfo);

                // call the callback and populate the Title field with the file name
                cb(blobInfo.blobUri(), { title: file.name });
            };
        };

        input.click();
    }
});

最佳答案

我通过使用 responsivefilemanager 解决了这个问题

这使得将图像和其他文件插入到内容区域变得更加容易。

关于javascript - TinyMCE上传音频/视频/图像/文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46155757/

相关文章:

javascript - 循环以及如何提取以 S 开头的公司名称

javascript - 测试 IIFE(立即调用的函数表达式)的最佳方法

javascript - 如何使用 UI Bootstrap?

php - SQL - 组织多个发布/记录类型的最有效方法

javascript - jquery - 添加监听器到生成的 html

javascript - 更改表格行高

javascript - 从 <input> 获取 id= 和 value= 的动态值,并将它们设为变量以在 javascript 中使用它们

php - 如何制作静态动态页面?

jquery - 使用 jQuery 切换不透明度图层以使网页的其余部分变暗

javascript - 使用 onchange 提交获取多个复选框值