勉強したことのメモ

webプログラマが勉強したことのメモ。

CKEditor5(WYSIWYGエディタ)に画像アップロード機能を追加する方法

   

CKEditor5(ウィジウィグエディタ)に画像アップロード機能を追加したい。公式アップロードアダプタがあるもののサーバにコネクタをインストールする必要があるらしい。設置先がレンタルサーバだとインストールできない可能性があるので異なる方法で実装したい。以下に対応方法をメモ。

 

ソースコード

WYSIWYGエディタ側

<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>CKEditor</title>
<style>
.ck-editor__editable_inline {
    min-height: 200px;
}
</style>

</head>
<body>

    <?php if( $_POST ){ ?>
        <div>送信結果:</div>
        <pre><?php var_dump($_POST['editor']);?></pre>
    <?php } ?>

    <form action="./index2.php" method="post">
        <textarea name="editor" id="editor"></textarea><br>
        <input type="submit" value="送信">
    </form>

    <script src="//cdn.ckeditor.com/ckeditor5/33.0.0/classic/ckeditor.js"></script>
    <script src="//cdn.ckeditor.com/ckeditor5/33.0.0/classic/translations/ja.js"></script>

    <script>
    ClassicEditor.create( document.querySelector( '#editor' ), {
        language: 'ja',
        ckfinder: {
            uploadUrl: './upload.php'
        }
    }).then( editor => {
        console.log( editor );
    }).catch( error => {
        console.error( error );
    });
    </script>
</body>
</html>

 

画像アップロード側(upload.php)

<?php
do{

    //アップロード先のパス
    $path = '/var/www/html/upload/img/';

    //アップロード先のURL
    $url = 'https://hoge.com/upload/img/';

    $img = $_FILES['upload'];

    if( !$img['size'] ){
        $msg = '画像がアップロードされていません。';
        break;
    }

    $ext = $img['type'];
    if ($ext == 'image/jpeg' || $ext == 'image/jpg') {
        $tmp_ext = '.jpg';
    } elseif ($ext == 'image/png') {
        $tmp_ext = '.png';
    } elseif ($ext == 'image/gif') {
        $tmp_ext = '.gif';
    } elseif ($ext == 'image/webp') {
        $tmp_ext = '.webp';
    }

    if( !$tmp_ext ){
        $msg = 'jpg / png / gif / webpファイルのみアップロードいただけます。';
        break;
    }

    $img_name = md5(uniqid(rand(), true)) . '_' . time() . $tmp_ext;

    if( !move_uploaded_file($img['tmp_name'], $path . $img_name) ){
        $msg = 'アップロード中にエラーが発生しました。';
        break;
    }

    $flg = true;

}while(0);

if( $msg ){
    $response = array(
        'uploaded' => false,
        'error' => array(
            'message' => $msg,
        ),
    );
}else{
    $response = array(
        'url' => $url . $img_name, 
        'uploaded' => true,
    );
}

echo json_encode($response);

アップロード先のパスとURL部分は適宜変更する。

 

参考サイト

https://qiita.com/sawadashota/items/984fa2c73dfd2062a1a4

 - JavaScript

  関連記事

reCAPTCHA v2でAjaxは使わずにチェック状況を確認する方法

reCAPTCHA v2を実装する案件があり以前の記事を参考に組み込んでみたもの ...

javascriptでのについて

javascriptを書く際に、 <script> <!-- ...

javascriptの文末

下記みたいなコードがあって、文末に「;」が 無いのになんで動くのこれ? となった ...

jQuery UIでカレンダーピッカー(Datepicker)の利用方法

フォーム等で日付を入力する際にカレンダーピッカー機能を実装することがある。その際 ...

amazon等のECサイトによくにあるアイテムの満足度を星マークで送信・表示する方法

amazon等のECサイトによくにあるアイテムの満足度を星マークかつ5段階で送信 ...

JavaScriptでFlashのバージョンを取得

既存のソースでFlashのバージョン取得を 行っているものがあり、使いそうなので ...

alert後にページ遷移

JavaScriptのalertが閉じたらページ遷移させてほしいと言われ、con ...

マウスオーバーでの画像切り替えをJavaScriptで簡単に対応

マウスが要素にのった際に画像を切り替える処理を入れたかった。多分CSSの管轄なん ...

八地方区分→都道府県→路線→駅名の連携したセレクトメニュー

八地方区分(関東、近畿等)をプルダウンから選ぶと区分内の都道府県プルダウンが表示 ...

さくらレンタルサーバでCookieが保存できない

さくらインターネットのレンタルサーバでjquery.cookie.jsを用いてC ...