お世話になります。
兼ねてより制作中だった画像投稿機能付のWEBサイトを、
HEROKUの無料枠でデプロイを行い完了までさせましたが、
その後、画像の登録操作をデプロイ後のWEB上から行い、
正常に表示までされることを確認し、一旦ブラウザを閉じ、
(体感ですが)1~2時間程経過後に再度WEBサイトを開き、
画像投稿済みの記事を見ると、画像部分だけ消えている状況でした。
この状況を改善する方法を調査中です。
今までの制作環境が、
AWS Cloud9:無料枠
MySQL:ver5.7.26
CakePHP:ver3.8.2
PHP:ver7.2.19
という内容であり、
その中ではその点について問題はなく、
この件について調べてみると、
HEROKUへデプロイ後の画像が消える問題の原因は、
"データベース内への画像データの保存方法にありそうだ"との判断に、
現在は至っています。
■参考記事:https://qiita.com/hmmrjn/items/b02f076ceaeeaaceb999
(Qiita:Railsではありますが本件と同内容と思われます)
今後、自身のWEBサイトの投稿後の画像をHEROKU上で消えないように
表示させる方法として、バイナリデータで保存していこうと判断しているのですが、
そもそも現在使用中の画像アップロードプラグイン
"josegonzalez/Upload Plugin 3.0"で、
バイナリデータの保存が可能なのかを現在は調べていますが、
公式ドキュメントを見ても、
はっきりとした仕様の確認ができない状況にあります。
一旦は、AWS Cloud9:無料枠の中で、カラムの追加やコード追記を行い、
バイナリデータを元に画像の投稿、表示まで確認できた後、
さらに、記事編集ページにある、「画像の差し替え」についても、
修正の上、改めてHEROKUへデプロイを予定していますが、
このプラグインの使用を前提とする改善プラン自体を、
見直す必要があるのか、またはこのプラグインを使用しつつも、
改善できるのか、ご教示いただけると助かります。
※「画像の差し替え」機能の参考記事
https://blog.s-giken.net/353.html
https://blog.s-giken.net/354.html
https://blog.s-giken.net/355.html
現在はDBへのバイナリデータ登録用のカラムの追加と、
追加したカラム分(image_binary)へのmodel内の追記まで、
済ませた状態です。この状況で画像の登録後、該当カラムへの登録された内容を見ると、
DB上で確認すると、「image_binary: image/jpeg」とあり、CakePHPのデバッグツールで
確認するとimage_binaryカラムに「0」と表示されています。
IcesTable.php
php
1public function initialize(array $config) 2 { 3 parent::initialize($config); 4 5 $this->setTable('ices'); 6 $this->setDisplayField('id'); 7 $this->setPrimaryKey('id'); 8 9 $this->addBehavior('Timestamp'); 10 11 $this->addBehavior('Josegonzalez/Upload.Upload', [ 12 'image_file' => [ 13 'keepFilesOnDelete' => false, 14 'nameCallback' => function ($data, $settings) { 15 return uniqid().'-'.strtolower($data['name']); 16 }, 17 'fields' => [ 18 'path' => 'webroot{DS}upload_img{DS}{model}{DS}{field}{DS}', 19 'dir' => 'image_file_path', 20 'size' => 'image_file_size', 21 'type' => 'image_binary'//今回の追記部分 22 ] 23 ] 24 ]); 25 //後略
MySQL
1//画像ファイルに関連するカラムのみ記載しています 2mysql> desc ices \G 3*************************** 1. row *************************** 4//中略 5*************************** 9. row *************************** 6 Field: image_file 7 Type: varchar(255) 8 Null: YES 9 Key: 10Default: NULL 11 Extra: 12*************************** 16. row *************************** 13 Field: image_file_path 14 Type: text 15 Null: YES 16 Key: 17Default: NULL 18 Extra: 19*************************** 17. row *************************** 20 Field: image_file_size 21 Type: int(11) 22 Null: YES 23 Key: 24Default: NULL 25 Extra: 26*************************** 18. row *************************** 27 Field: image_binary//バイナリデータの保存のための追加カラム 28 Type: mediumblob 29 Null: YES 30 Key: 31Default: NULL 32 Extra: 3318 rows in set (0.00 sec)
内容に不足があれば、追記しますので、随時教えていただきたいです。
お手数ですが、ご教示、お願いいたします。
また、参考となる、記事があればあわせて、
提示していただけるととても助かりますので、
あわせて、よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/20 03:46
2019/12/20 04:03
2019/12/20 08:48
2019/12/21 08:01
2019/12/26 11:33