CKEditor5(WYSIWYGエディタ)に画像アップロード機能を追加する方法
2024/01/12
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部分は適宜変更する。
参考サイト
関連記事
-
JavaScriptで画像読み込み完了のタイミングを検知する「imagesLoaded」ライブラリの利用方法
大き目のサイズの画像をページに設置すると読み込み完了まで時間がかかる。その画像が ...
-
CKEditor5(WYSIWYGエディタ)をページ遷移無しでtextareaに切り替える方法
ラジオボタンを選択することでCKEditor5(ウィジウィグエディタ)とテキスト ...
-
JavaScriptにて電子書籍や漫画ビューア用のライブラリ「ToraViewer」の利用方法
電子書籍や漫画ビューア用を設置したい。条件としてはレスポンシブ対応していること。 ...
-
Gif画像に再生ボタンを設置し、ユーザーの操作により再生⇔停止が行える「gifffer」ライブラリの利用方法
あるページにGif画像を設置し、当該画像が表示されても自動再生させず、再生ボタン ...
-
フォームで画像をとりあつかう際にBase64エンコードした上で送信する方法
PHP等サーバサイド系の言語は利用不可(JSは利用可)な環境でformを作成し画 ...