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

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

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

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

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

Smarty

Smartyは、PHPアプリケーションで使用されるテンプレートエンジンです。

Q&A

解決済

2回答

4788閲覧

画像のアップロードが出来ません。データベースにインサートされず困っています。

chokochokochok

総合スコア46

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

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

Smarty

Smartyは、PHPアプリケーションで使用されるテンプレートエンジンです。

0グッド

0クリップ

投稿2016/01/24 09:05

編集2016/01/24 09:24

画像のアップロードが出来ません。
以前こちらで質問されているかたのところにあったサイト
http://www.php-labo.net/tutorial/php/upload.html)を参考にさせていただきましたがデータベースにインサートされません。自身のソースでどこが原因なのかを教えて頂きたいです。よろしくお願い致します。

ソース
html
<input type="file" name="image1">

php
if (is_uploaded_file($_FILES["image1"]["tmp_name"])) {
if (move_uploaded_file($_FILES["image1"]["tmp_name"], "files/".$nowtime.'.jpg')) {
$image_url_1='http://会社のURL'. "files/".$nowtime.'.jpg';
$stmt->bindParam(':img1',$image_url_1);
echo $_FILES["image1"]["name"] . "をアップロードしました。";
} else {
echo "ファイルをアップロードできません。";
}
} else {
$stmt->bindParam(':img1', $n = null);
echo "ファイルが選択されていません。";
}

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

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

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

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

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

guest

回答2

0

ベストアンサー

PHP側に画像が送られていることを前提としますね。

PHP

1if (is_uploaded_file($_FILES["image1"]["tmp_name"])) { 2 // サーバーに送信されたファイルを "files/xxxxxxxx.jpg" に移動 3 if (move_uploaded_file($_FILES["image1"]["tmp_name"], "files/".$nowtime.'.jpg')) { 4 // URL(文字列)を作成(※A) 5 $image_url_1='http://会社のURL'. "files/".$nowtime.'.jpg'; 6 // 文字列を MySQL のパラメータに設定 7 $stmt->bindParam(':img1',$image_url_1); 8 echo $_FILES["image1"]["name"] . "をアップロードしました。"; 9 } else { 10 echo "ファイルをアップロードできません。"; 11 } 12} else { 13 $stmt->bindParam(':img1', $n = null); 14 echo "ファイルが選択されていません。"; 15}

これらのコードから、MySQL には ※A で作成したURLを保存しているだけですね。
ファイルのアップロードが成功しているなら、"files/". $nowtile . ".jpg" にファイルが存在しているはずです。

質問者様はこのファイルをそのまま MySQL に保存されたいのでしょうか?
もしそうであれば、$image_url_1 には、画像ファイルそのものをセットする必要があります。

PHP

1$image_url_1 = file_get_contents("files/".$nowtime.'.jpg');

もし、PHP側にファイルが渡ってきていないということでしたら、HTML 側の下記部分をご確認ください。

① form に enctype="multipart/form-data" をつけていらっしゃいますか?
② form に method="post" で送信していらっしゃいますか?

HTML

1<form action="送信先URL" method="post" enctype="multipart/form-data"> 2<input type="file" name="image1"> 3</form>

参考URL
http://php.net/manual/ja/features.file-upload.post-method.php

投稿2016/01/26 13:48

usk

総合スコア397

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

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

chokochokochok

2016/01/31 05:34

回答ありがとうございます。私はMysqlに保存したいのですが"files/". $nowtile . ".jpg" にデータが入っていない状態です。Nullな状態です。 そもそもURLにも保存ができていない状態です。 ◆$image_url_1 = file_get_contents("files/".$nowtime.'.jpg'); ↑つけてみましたが if (is_uploaded_file($_FILES["image1"]["tmp_name"])) {のところでNotice: Undefined index:とエラーが出てしまいました><つまり作ったfileに移動できていないということですよね>< ◆① form に enctype="multipart/form-data" をつけていらっしゃいますか? ② form に method="post" で送信していらっしゃいますか? →HTML側についてはどちらもつけてあります!
usk

2016/02/01 00:36

> ↑つけてみましたが if (is_uploaded_file($_FILES["image1"]["tmp_name"])) {のところでNotice: Undefined index:とエラーが出てしまいました>< > つまり作ったfileに移動できていないということですよね>< うーん、is_uploaded_file 部分でエラーが出ているなら、ちょと違いますね。 画像ファイルが正常にアップロードできていないのだと思います。 (おそらく、この後は else 文の処理に遷移していると思います) ひょっとして、フォームの中に input type="file" のタグが複数存在していたりしていないでしょうか。 フォームから送信するファイルが1つだけ(input type=file のタグが一つだけ)ということであれば、まずはファイルがアップされているかどうかを確認することをお勧めします。 方法: is_uploaded_file の前で $_FILES の中身を var_dump($_FILES) を記述し、フォームのアップロード処理を実行する。 ↓ $_FILES の中に tmp_name にちゃんと値が存在していれば、フォームからのアップロードは正しく行えていると判断できます。 逆に $_FILES の中で tmp_name が空文字などの場合は、フォームからのアップロードが正しくできていないことになります。 前者と後者でこの後のアプローチが変わってくるので、まずはフォームからファイルがアップロードされているかどうかを確認してみてください。 > Notice: Undefined index: これは、『($_FILES 配列内に)そんな要素ないよー』的な通知メッセージです。 つまり、$_FILES['image1']['tmp_name'] が無いと、PHPさんがおっしゃっております。 その他: PHP では、扱えるファイルの最大サイズが決まっております。 http://futuremix.org/2008/08/php-file-upload-problem
chokochokochok

2016/02/02 03:49

回答者さまのおっしゃった通り、なんとformタブの閉じタブが2箇所もありました(>_<)直したところ無事DBにちゃんとファイルが存在していました!!いつも凡ミスばかりでこちらに質問してしまい申し訳ないです。ただこちらの質問とは異なってしまうので、解決出来なればまた質問させて頂こうと思うのですが、そのデータを一覧でブラウザに表示させた際に、私がアップロードした写真だけ出て来なかったので、これはファイルのサイズオーバーしているのかもしれませんσ^_^;引き続き頑張りたいと思います!回答ありがとうございました☆
guest

0

考えられる原因がたくさんあります。
・画像じゃない
・クライアントからサーバに送信できていない
・phpの容量制限にひっかかている
・DBが存在しない、テーブルが存在しない、列の属性が間違っている
・insert文を発行していない(実行していない)
などなど

これらを余すところ無く回答するのは厳しい物があるので、
「できる方法」を探してみてください。

一つのマニュアルに頼らず、複数のマニュアルを参考にしてみると、
視点を変えて物事を見られるようになるので、早く解決にたどり着けます。

ということで、「php ファイル アップロード」でGoogle検索して、
片っ端から読み漁って、試行実装してみてください。

投稿2016/01/24 09:49

TetsujiMiwa

総合スコア1124

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

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

chokochokochok

2016/01/31 05:35

回答ありがとうございます。そうですね、もっと自身で詰めていって原因を突き止めたいと思います。アドバイスありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問