Ckeditor 图像上传 - 不正确的服务器响应

Posted

技术标签:

【中文标题】Ckeditor 图像上传 - 不正确的服务器响应【英文标题】:Ckeditor Image Upload - Incorrect Server Repsonse 【发布时间】:2019-01-07 09:34:57 【问题描述】:

我在上传图片时遇到问题。 CKEditor 在使用拖放上传图片插件时不断抛出“错误的服务器响应”错误。

我在我的 ckeditor config.js 文件中添加了以下几行:

config.extraPlugins = 'uploadimage';
config.imageUploadUrl = './scripts/ckImageUpload.php';
config.extraPlugins = 'image2';

而我的 ckImageUpload.php 脚本是:

con = dbConnect();
$id = $_GET['edit'];
$time = new DateTime;

$fileName = $time->format(DateTime::ATOM).pathinfo($_FILES['upload']['name'], PATHINFO_EXTENSION);

$url = './images/uploaded/'.$fileName;

if(move_uploaded_file($_FILES['upload']['tmp_name'], $url)) 

    $data = ['uploaded' => 1, 'fileName' => $filename, 'url' => $url];


    $query = 'INSERT INTO postImages (
            parentID,url
        ) VALUES (
            "'.$id.'",
            "'.$url.'"
        )';

    if(!mysqli_query($con, $query))
        $error = 'Insert query failed';
        $data = array('uploaded' => 0, 'error' => array('message' => $error));
    

 else 

    $error = 'There was an error uploading the file';
    $data = array('uploaded' => 0, 'error' => array('message' => $error));



echo json_encode($data);

如果我伪造它并删除除以下行之外的所有内容,并将名为 image.jpg 的图像放置在正确的位置,错误就会消失,并且图像会按应有的方式显示在编辑器中:

$data = ['uploaded' => 1, 'fileName' => 'image.jpg', 'url' => './images/uploaded/image.jpg'];
echo json_encode($data);

【问题讨论】:

【参考方案1】:

我知道这已经过时了,但我遇到了同样的问题,将来可能会有其他人遇到,因为这是一个非常奇怪的问题。花了我几个小时,但有一个解决方案。而不是信任标准。 json_encode,发送一个实际的 JSON 响应是可行的。

简单的改变

echo json_encode($data);

进入:

return new Symfony\Component\HttpFoundation\JsonResponse($data);

会让这个工作。

HTH

【讨论】:

以上是关于Ckeditor 图像上传 - 不正确的服务器响应的主要内容,如果未能解决你的问题,请参考以下文章

ckeditor 5中的图像上传不适用于laravel 8

CKEditor+CKFinder,上传图片成功,图片链接正确,但是无法显示,请问怎么回事?

CanCan不会将图像上传到服务器(ckeditor)

如何将自定义文件浏览器/上传与 CKEditor 集成?

CKEditor 无法解析 JSON 响应

CKEditor + CKFinder (上传图片出现问题)