Laravel在CKEDITOR上传图片

时间:2017-12-20 15:51:21

标签: php laravel laravel-5 ckeditor

当我使用ckeditor上传图片并将其附加到发布时我的上传图片功能在控制器工作正常没有任何问题,但当我想将上传的图像返回到该时,ckeditor无法得到,例如,这是我的代码:

控制器:

public function uploadImageContent()
{
    $this->validate(request(), [
        'upload' => 'mimes:jpeg,jpg,gif,png'
    ]);

    $file = request()->file('upload');
    $filename = $file->getClientOriginalName();

    $year = Carbon::now()->year;
    $imagePath = "/uploads/post_images/{$year}/";

    if (file_exists(public_path($imagePath) . $filename)) {
        $filename = Carbon::now()->timestamp . '.' . $filename;
    }

    $file->move(public_path() . $imagePath, $filename);

    $url = $imagePath . $filename;

    return "<script>window.parent.CKEDITOR.tools.callFunction(1,'{$url}','')</script>";
}

此功能正常,我在consolenetwork

上没有任何错误
return "<script>window.parent.CKEDITOR.tools.callFunction(1,'{$url}','')</script>";

应该是返回路径,但不起作用。

视图:

<script>
    $(function () {
        CKEDITOR.replace('description', {
            height: '200px',
            extraPlugins: 'forms',
            filebrowserUploadUrl:'/dashboard/administrator/attachImage',
            filebrowserImageUploadUrl:'/dashboard/administrator/attachImage'
        });

    });
</script>

路线:

Route::group(['namespace' => 'Dashboard', 'prefix' => 'dashboard'], function () {
    $this->group(['prefix' => 'administrator'], function () {
        ...
        $this->post('/attachImage', 'ContentsController@attachImage');
        ...
});

ContentsController:

class ContentsController extends Controller
{
    ...

    public function attachImage()
    {
        $this->uploadImageContent(request()->all());
    }
}

2 个答案:

答案 0 :(得分:3)

您的代码对我不起作用。我观察到的是,您没有在CKEditorFuncNum处嵌入1(服务器将其作为POST变量接收)作为callFunction()的第一个参数。我用1取代了$request->CKEditorFuncNum,然后我使用了return语句而不是echo

这是您的代码:
echo "<script>window.parent.CKEDITOR.tools.callFunction(1,'{$url}','')</script>";

这是我的代码:
return "<script>window.parent.CKEDITOR.tools.callFunction('{$request->CKEditorFuncNum}','{$url}','')</script>";

我正在使用Laravel 5.8

希望对别人有帮助。

答案 1 :(得分:0)

使用echo代替return来解决我的问题:

echo "<script>window.parent.CKEDITOR.tools.callFunction(1,'{$url}','')</script>";

我在laravel 5.5

上遇到了这个问题