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

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

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

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

274閲覧

画像ファイルのデータを他ファイルにアップロードしたい

ujinchu

総合スコア19

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2019/03/23 02:26

編集2019/03/23 03:53

画像のアップロードフォームを作っています。

【フォーム画面】→【確認画面】にてアップロードをしたいのですが、正常にアップロードが為されません。

どなたかお力をお貸しくださいm(._.)m

html

1// form.html 2<!DOCTYPE html> 3<html lang="ja"> 4 <head> 5 <meta charset="utf-8"> 6 <title>フォーム画面</title> 7 </head> 8 <body> 9 <form class="form1" action="confirm.php" method="post" enctype="multipart/form-data"> 10 名前: <br> 11 <input type="text" name="onamae" placeholder="名前を入力してください"> 12 <br> 13 <input type="radio" name="gender" value="1">14 <input type="radio" name="gender" value="2">15 <br> 16 出身地域: 17 <select name="area"> 18 <option value="" selected>出身地を選択してください</option> 19 <option value="北海道">北海道</option> 20 <option value="東北">東北</option> 21 <option value="関東">関東</option> 22 <option value="中部">中部</option> 23 <option value="近畿">近畿</option> 24 <option value="中国">中国</option> 25 <option value="四国">四国</option> 26 <option value="九州">九州</option> 27 <option value="沖縄">沖縄</option> 28 </select> 29 <br> 30 サイト訪問の目的(複数選択可) 31 <br> 32 <select name="purpose[]" size="5" multiple> 33 <option value="ビジネス">ビジネス</option> 34 <option value="プライベート">プライベート</option> 35 <option value="趣味">趣味</option> 36 <option value="暇つぶし">暇つぶし</option> 37 <option value="特にない">特にない</option> 38 </select> 39 <br> 40 <br> 41 趣味: 42 <br> 43 <input type="checkbox" name="hobby[]" value="スポーツ">スポーツ<br> 44 <input type="checkbox" name="hobby[]" value="ゲーム">ゲーム<br> 45 <input type="checkbox" name="hobby[]" value="食事">食事<br> 46 <br> 47 <br> 48 本文 49 <br> 50 <textarea name="honbun" rows="8" cols="80"></textarea> 51 <br> 52 <input type="hidden" name="user_id" value="0001"> 53 <input type="hidden" name="MAX_FILE_SIZE" value="100000"> 54 <br> 55 画像: 56 <br> 57 <input type="file" name="uploadfile"> 58 <br> 59 説明: 60 <br> 61 <input type="text" name="comment"> 62 <br> 63 <input type="submit" value="送信"> 64 </form> 65 </body> 66</html>

php

1// confirm.php 2<?php 3// エラーを出力する 4ini_set('display_errors', "On"); 5?> 6<!DOCTYPE html> 7<html lang="ja"> 8 <head> 9 <meta charset="utf-8"> 10 <title>確認画面</title> 11 </head> 12 <body> 13 <form name="form1" action="view.php" method="post"> 14 15 <?php 16 echo $_POST['onamae'] . "さん、こんにちは!<br><br>"; 17 18 if($_POST['gender'] == 1){ 19 echo "性別:男性<br>"; 20 }elseif($_POST['gender'] == 2){ 21 echo "性別:女性<br>"; 22 } else{ 23 echo "性別:未選択<br>"; 24 } 25 26 if( $_POST["area"] == ""){ 27 echo "出身地:未選択<br>"; 28 }else { 29 echo "出身地: " . $_POST["area"] . "<br>"; 30 } 31 ?> 32 33 <?php 34 $pp = []; 35 if(isset($_POST["purpose"])){ 36 echo "サイト訪問の目的<br>"; 37 foreach ($_POST["purpose"] as $purposes) { 38 $pp[] = $purposes; 39 ?> 40 <ul> 41 <li><?php echo $purposes; ?></li> 42 </ul> 43 <?php 44 } 45 }else{ 46 echo "サイト訪問の目的:なし <br>"; 47 } 48 49 if(isset($_POST['hobby'])){ 50 $hobby = implode('と', $_POST['hobby']); 51 echo "私の趣味は" . $hobby . "です<br>"; 52 }else{ 53 echo "趣味:なし<br>"; 54 }; 55 echo "<br>"; 56 echo "入力内容:<br>"; 57 echo nl2br($_POST['honbun']); 58 59 $file_dir = '/Applications/MAMP/htdocs2/image/'; 60 $file_path = $file_dir . $_FILES['uploadfile']['name']; 61 62 if(move_uploaded_file($_FILES['uploadfile']['tmp_name'], 63 $file_path)){ 64 65 $img_dir = "/image/"; 66 $img_path = $img_dir . $_FILES['uploadfile']['name']; 67 $size = getimagesize($file_path); 68 ?> 69 ファイルアップロードを完了しました。 <br> 70 <img src="<?= $img_path ?>" <?= $size[3] ?> > <br> 71 <b> <?php echo $_POST['comment'] ?> <br> </b> 72 <?php 73 }else { 74 ?> 75 正常にアップロード処理されませんでした。 76 <?php 77 } 78 ?> 79 <br> 80 <input type="submit" value="確認" name="confirm"> 81 <input type="submit" value="戻る" name="back"> 82 <input type="hidden" name="user_id" value="<?= $_POST['user_id'] ?>"> 83 <input type="hidden" name="onamae" value="<?= $_POST['onamae'] ?>"> 84 <input type="hidden" name="honbun" value="<?= $_POST['honbun'] ?>"> 85 <input type="hidden" name="hobby" value="<?= $hobby ?>"> 86 <input type="hidden" name="gender" value="<?= $_POST['gender'] ?>"> 87 <input type="hidden" name="area" value="<?= $_POST['area'] ?>"> 88 <input type="hidden" name="purpose" value="<?= implode(',',$pp) ?>"> 89 </form> 90 </body> 91</html> 92

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

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

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

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

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

sakura_hana

2019/03/23 03:28

「正常にアップロードが為されません。」とはどういうことでしょうか。 「エラーが出る」「『正常にアップロード処理されませんでした。』の表示がされる」「『完了しました』と出るが、実際に該当の場所にファイルが存在しない」など具体的に記述すると回答が付きやすくなります。 (こちら参照→https://teratail.com/help/question-tips) ちなみにPHP側に</form></body>などが無いですが、質問するに辺り省略したということでいいでしょうか?
m.ts10806

2019/03/23 03:36

「他ファイルに」とは?
ujinchu

2019/03/23 03:50

sakura_hana様 >「正常にアップロードが為されません。」とはどういうことでしょうか。 想定通りであればhtmlファイルでアップロードをした画像ファイルが 「ファイルアップロードを完了しました。」というメッセージとともにphpファイルに表示されるはずなのですが、 ファイルアップデートができなかった際に例外処理でelse設定をした「正常にアップロード処理されませんでした。」になってしまう、ということです。 >PHP側に</form></body>などが無いですが、質問するに辺り省略したということでいいでしょうか? その通りです。コード全体を記載し直しました。
ujinchu

2019/03/23 03:52

mts10806様 >「他ファイルに」とは? confirm.phpファイルのことです。 記載したコード通りに行けば、 htmlのブラウザ上にてアップロードをした画像ファイルが、 「'/Applications/MAMP/htdocs2/image/';」へと保存されて、 phpブラウザ上で表示されると考えております。
m.ts10806

2019/03/23 03:54

プログラミングにおいて「例外処理」とはtry-catchによってExceptionを拾うことであり、if-elseに入ることではありません。「例外」なので想定していない事態のことです。elseはあくまで「ifがtrueではなかった」だけです。
m.ts10806

2019/03/23 03:55

「他ファイル」もそうですが用語の定義や表現も適切にしないといけませんね。話が通じなくなります。
ujinchu

2019/03/23 03:59

mts10806様 教えていただきありがとうございます。以後、気をつけます。
guest

回答1

0

ベストアンサー

地道にデバッグしてください。

変数に想定通りの値が入っているか、想定の分岐箇所を通ってるか、
それらはすべてデバッグによって知ることができますし、想定の動きをしていない
ことが分かればそこから調整していくことができます。
(適切にデバッグできれば自己解決できます)

ファイルアップロードで問題になることは大体決まってます。

ちなみにセキュリティ面も加味した場合、下記のような記事を参考にして組み込んでいくことにより、より安全な処理が組めます。


質問内容からしか読み取ることはできません。
書いていないことを読み取ることは不可能です。
起きている現象、自分が試したこと、何かしらしらべたこと あるはずです。
(いずれもしていないのでしたらデバッグ依頼・丸投げ質問として非推奨です)

投稿2019/03/23 03:43

m.ts10806

総合スコア80850

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

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

ujinchu

2019/03/23 04:41

今後、質問内容についてはできるだけ具体性を持たせるように努めます。ありがとうございます。 また、報告不要かと思いますがデバッグの結果原因が分かりました。 <input type="hidden" name="MAX_FILE_SIZE" value="1000000">のvalueが画像ファイルのサイズに足りていなかったということでした。 つくづくデバッグの大切さを思い知らされました。アドバイスいただきありがとうございました。
m.ts10806

2019/03/23 08:06

ファイル送信するのでしたらファイルサイズのチェックも必須ですね。 サーバーの設定サイズ超えたら確かnullなので引っ掛け方も工夫が必要です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問