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

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

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

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

アップロード

アップロードは特定のファイルをウェブサーバに送るプロセスのことを指します。

FuelPHP

FuelPHPは、軽量高速で開発が可能なPHPのWebアプリケーションフレームワークです。

Q&A

解決済

3回答

6883閲覧

Fuelphpでファイルのアップロードができません。formのenctypeで怒られます

chimny

総合スコア12

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

アップロード

アップロードは特定のファイルをウェブサーバに送るプロセスのことを指します。

FuelPHP

FuelPHPは、軽量高速で開発が可能なPHPのWebアプリケーションフレームワークです。

0グッド

0クリップ

投稿2016/03/12 07:21

ファイルのアップロードができません。
php初心者です。どなたかご教授ください。

PHP 5.6.12
Mysql 5.0.11
fuelphp 1.7.2

Fuel\Upload\NoFilesException [ Error ]:
No uploaded files were found. Did you specify "enctype" in your <form> tag?

と怒られてしまいます。
enctypeもしっかり記述しているはずなのですが。。

Upload::prosess($config);
を読み込んだあたりでエラーが出ているようなのですが、原因がわからず…
アドバイスをお願いたします。

////view////

<?php echo Form::open(array('class'=>'form-horizontal', 'enctype'=>'multipart/form-data', 'method'=>'post')); ?>
<div class="form-group"> <div class="col-sm-10"> <label>アップロードファイル</label> <?php echo Form::file('upload'); ?> </div> </div> <div class="form-group"> <div class="col-sm-2"> <?php echo Form::submit('submit', 'アップロード', array('class' => 'btn btn-primary')); ?> </div> </div>
<?php echo Form::close(); ?>

////view////

////controller////

public function action_index()
{
// 設定(ファイル保存場所)
$config = array(
'path' => DOCROOT . 'assets/img/',
'randomize' => true,
'ext_whitelist' => array('img', 'jpg', 'jpeg', 'gif', 'png'),
);

$userid = Auth::get_user_id(); Upload::process($config); if (Upload::is_valid()) { Upload::save(); foreach (Upload::get_files() as $file) { $photo = Model_Photo::forge(array( 'users_id' => $userid, // 現在ログインしているユーザーのIDをセット 'photo_saved_as' => $file['saved_as'], 'photo_type' => $file['type'], 'photo_size' => $file['size'], 'photo_mimetype' => $file['mimetype'], 'photo_saved_to' => $file['saved_to'], 'photo_published' => '1', 'photo_updated_at' => 0, )); if ($photo->save()) { Session::set_flash('success', '画像をアップロードしました。'); } else { Session::set_flash('error', '画像をアップロードできませんでした。'); } } } //エラー処理 foreach (Upload::get_errors() as $file) { $html_error = ''; foreach ($file['errors'] as $error) { $html_error .= '<p>'. $error['message'] . '</p>'; } $this->template->title = '画像をアップロードできませんでした。'; $this->template->content = View::forge('photo/add'); $this->template->content->set_safe('html_error', $html_error); return; } $this->template->title = '画像ライブラリ'; $this->template->content = View::forge('upload/index'); }

////controller////

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

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

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

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

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

shi_ue

2016/03/12 08:20

生成されたhtmlのフォームにenctypeは設定されているか確認しましたか?
guest

回答3

0

自己解決いたしました。

単純に、

if(Input::method()=='POST'){
...

で、判定したところエラーが消えました。
基本的にform送信時には必要なんですかね。。
様々なサンプルを見ても上記のpost判定の記述はなかったもので必要ないのだと思っていました。

答えてくださった方、心よりお礼申し上げます。

投稿2016/03/16 11:57

chimny

総合スコア12

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

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

0

ベストアンサー

原因に関して確認をしていないのですがミスっぽいのを見つけたので一応。

////controller//// public function action_index() { // 設定(ファイル保存場所) $config = array( 'path' => DOCROOT . 'assets/img/', // ↓ に変更 'path' => DOCROOT . '/assets/img/',

投稿2016/03/15 11:02

fagai

総合スコア2158

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

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

chimny

2016/03/15 12:52

現実逃避のために、少しこのエラーから離れていました。 ご指摘ありがとうございます! fagaiさんですよね。ちょこちょこブログを参考にさせていただいています(^o^)
fagai

2016/03/15 12:57

お、どうもです~。 fuelphpの記事は基本2012年に書いたものが多いので現在と少し異なっているかもしれませんが、お役に立っていれば嬉しいですー。 時間があったら私の方でも確認してみます。
chimny

2016/03/16 12:00

ブログを参考にさせていただいているので、BAをfagaiさんにさせていただきました。
fagai

2016/03/16 12:13 編集

どうも1.6.1からuploadクラスの読み込み先が2系で使うライブラリへ変更(fuel\coreからfuelphp\upload)されているので、それが原因となっているようでした。 自分のブログ記事も更新しておきますね
chimny

2016/03/16 13:52

わざわざありがとうございます! これからも参考にさせてください(^^)
chimny

2016/03/18 02:13

これまた有益な情報ありがとうございます! 今度の連休でじっくり読んでみます~
guest

0

お忙しいところ、ありがとうございます。そして、お返事遅くなってしまい、大変申し訳ありません。
エラーにばっかり気を取られていました。controllerでエラーになっている部分をコメントアウトして出力してみたところ、確かに生成されていませんでした。
何が原因で記述されて居ない状態になってしまうのでしょうか。
当方の方でも調べてみます。

投稿2016/03/12 13:39

chimny

総合スコア12

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

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

chimny

2016/03/12 14:04

※訂正いたします。 申し訳ありません。 enctypeはしっかりと記述されていました。 やはり、 Upload::process($config); 以降でエラーになってしまう状態です
shi_ue

2016/03/12 14:25

同じエラーですか?
chimny

2016/03/12 15:21

そうなんです。同じエラーで止まってしまいます。 ちなみにローカル環境なんですが、win(xampp)でもmac(mamp)でも同じ箇所でエラーが出てしまいます。 エラーの箇所からして、configあたりかuploadクラスだと思うんですが、core触っていないので基本的に問題ないのですが、何が何やらわからず…と言った状態です
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問