Summernote 将“文件”字段添加到 POST

Posted

技术标签:

【中文标题】Summernote 将“文件”字段添加到 POST【英文标题】:Summernote adds "files" field to POST 【发布时间】:2020-05-13 06:26:47 【问题描述】:

我正在尝试将 Summernote 用作表单中的增强文本区域字段。提交表单后,我将$_POST 变量发送到我的php 后端。在一些意外行为之后,我尝试打印 $_POST 并注意到 Summernote 在其中添加了 2 个字段 - 通常的表单字段(在本例中为“描述”)和“文件”。我在任何地方都没有发现这种行为,而且我没有在 Summernote 内部或外部使用任何文件上传,所以我认为这要么是一个奇怪的错误,要么是我在某处犯了错误。我可以轻松解决这个问题,但我只是想知道我是否做错了什么和/或是否有办法阻止它这样做。

我使用的是 PHP 7.1,BS4 版本的 Summernote 0.8.15,我没有收到任何控制台错误。

html/PHP:

<div class="form-group">
    <label for="summernote">Description</label>
    <textarea name="description" id="summernote" class="form-control"></textarea>
</div>

...

<?php
    if(!empty($_POST))
    
        print_r($_POST); //Array ( other fields... [description] => test [files] => )
    
?>

JS:

$('#summernote').summernote(
    height: 150,
    toolbar: [
        ['style', ['bold', 'italic', 'underline']],
        ['fontsize', ['fontsize']],
        ['color', ['forecolor']],
        ['para', ['ul', 'ol', 'paragraph']]
    ],
    fontSizes: ['14', '16', '18', '20', '24', '28', '32']
);

【问题讨论】:

我以前没用过 Summernote,但是通过查看他们网站上的演示,我可以看到他们有一个名为 files 的输入,它具有多个属性。我认为它用于存储任何图像放入编辑器的文件。 【参考方案1】:

所以通过一些研究,看起来 Summernote 默认以 base64 格式提交图像和文件。即使您没有选择任何图像或文件,也会使用名为“文件”的输入,这就是您在帖子数据中看到文件变量的原因。

在进行研究时发现了这些:

提到base64: https://github.com/summernote/summernote/issues/72

关于如何不使用base64的问题: Summernote - Image url instead of Base64

什么是base64? What is base 64 encoding used for?

【讨论】:

谢谢,很高兴知道。我觉得除非配置中明确允许上传图片,否则这种情况不应该发生,但是好吧。

以上是关于Summernote 将“文件”字段添加到 POST的主要内容,如果未能解决你的问题,请参考以下文章

图片上传到 Summernote 编辑器中的文件夹

如何将 Bootstrap 4 添加到库 django-summernote?

Summernote 将字母间距添加到工具栏

Django-Admin 和 Django-Summernote 在我的表单中创建一个文件字段

如何通过 ajax 从 Summernote 编辑器将数据发送到 php 文件?

多个 Summernote 文本区域字段