質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Q&A

解決済

1回答

990閲覧

cakephp2 formタグに enctype="multipart/form-data"を入れるてアップロード入れるとエラーになる。

akobayashi

総合スコア15

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

0グッド

0クリップ

投稿2017/12/06 10:58

編集2017/12/07 05:27

追記しました。
cakephp2.10 で、
前回、以下のアップロードプラグインでcakephp2画像アップロードされない旨を質問させていただきましたが、
https://teratail.com/questions/103234

その際に、formタグにenctype="multipart/form-data"をいれる提案を受けました。
すると、Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Array' in 'field list',

SQL Query: INSERT INTO ●●●●●●●●●.bottoms (img_file_name) VALUES (Array, '2017-12-07 14:23:36', '2017-12-07 14:23:36')

という配列がはいっているというエラーがでました。

ビュー <form action="uppp" method="POST" enctype="multipart/form-data"> <?=$this->Form->input("img_file_name",array("type" => "file"));?> <?=$this->Form->end("送信");?> </form>
public function index(){ if($this->data){ if($this->Encode->save($this->data)){ $this->Session->setFlash(__('成功しました!')); }else{ $this->Session->setFlash(__('失敗しました!')); } } }
モデル <?php App::uses('AppModel','Model'); class Encode extends AppModel{ var $name = "Encode"; var $actsAs = array( 'UploadPack.Upload' => array( 'img' => array( 'path' => ':webroot/img/:style:id.:extension', 'styles' => array( 'thumb' => '80x80' ) ) ) );
-- -- テーブルの構造 `bottoms` -- CREATE TABLE IF NOT EXISTS `bottoms` ( `id` int(11) NOT NULL AUTO_INCREMENT, `img_file_name` varchar(255) NOT NULL, `username` varchar(255) NOT NULL, `title` varchar(255) NOT NULL, `email` varchar(255) NOT NULL, `comment` longtext NOT NULL, `region_id` int(11) NOT NULL, `sregion_id` int(11) NOT NULL, `money_id` int(11) NOT NULL, `shokushu_id` int(11) NOT NULL, `koyou_id` int(11) NOT NULL, `tokushu_id` int(11) NOT NULL, `created` datetime DEFAULT NULL, `modified` datetime DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `username` (`username`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=22 ;

enctype="multipart/form-data"をいれなければ、
そのままデータベースに画像の名前がインサートされるのですが、
画像はwebroot内に上がりません。
どなたか解る方いらっしゃいますでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2017/12/07 06:44 編集

先ほど回答のコメントには書いたのですが、まずはcakephp2のお作法どおりformヘルパーを利用して組んでみてはいかがででしょうか。正直なところ通常はenctypeを入れることと現在出ているエラーは無関係です。送信ファイルを何とかinsertしようとcakephp側で何か整形しようとしているからだと思いますが。formによるファイル送信でenctype="multipart/form-data"は必須です。この質問に提示のソースだとinputのtype=fileしかないのにDBにsaveしようとしてるからに他なりません。
guest

回答1

0

自己解決

ビュー

<form action="" method="POST" enctype="multipart/form-data"> <?=$this->Form->file('Bottom.img');?> <?=$this->Form->input('Bottom.title',array('type' => 'text'));?> <?=$this->Form->input('送信',array('type' => 'submit','lavel' => false));?> </form>

投稿2017/12/07 10:55

akobayashi

総合スコア15

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問