• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHPで画像データーのアップロードを行っています。)

PHPで画像データのアップロード方法と複数画像のアップロード手順

このQ&Aのポイント
  • PHPで画像データのアップロードを行っていますが、複数の画像を一度にアップロードする方法がわかりません。フォームを配列にしても一つの画像しかアップロードできません。
  • また、PHPでのメール自動送信はできますが、自動受信についてはわかりません。フォームからウィンドウズメールやアウトルックで受信できるようにしたいです。
  • 現在はPHP3.5+XAMPPでエクリプスを使って勉強しています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

> 単純にフォームを配列にしてもやはり一つの画像しかアップ出来ませんでした。 フォームだけ修正しても駄目で、PHPもファイルの数だけ処理をする必要があります。 HTMLで  sendfile → sendfile[] PHPで   $_FILES['sendfile']['name']; → $fname = $_FILES['sendfile']['name'][$i]; $_FILES['sendfile']['tmp_name']; → $_FILES['sendfile']['tmp_name'][$i]; にして、$iをアップロードファイル数だけループで回す。(0~...) という感じです。 (でもPHP3.5ってさすがに古すぎで、上記のような記述が使えるのか自信ないですが) > フォームからウィンドウズメール、アウトルック等で受信できるようにしたいのですが? ユーザーがメール発行 ↓ サーバーがその返信メールを自動受信して処理して、元の送信者にメールを送信 ↓ ユーザーが メーラーで内容確認 っていう意味ですか? PHPでのメール自動受信は、メールサーバー上でPHPが実行できるなら メールサーバーのaliasesか、~/.forward か、~/.qmailファイルで "| /パス/なんちゃら.php" を書いて、(/etc/smrshにも許可を入れて) メールが届いたらPHPプログラムに パイプするようにするか、 (この場合、タイムリーな処理が可能で、プログラムもシンプルです) POP受信の処理を書いた、PHPを任意のサーバー上に設置し サーバーのcron処理で、定期実行させることになります。 (この場合、定期実行するまで処理が待たされるのと、  一回のPOP受信で 複数のメールが届いているあることもあるので、ループ処理が必要なのと  処理済みのものを再処理しないように、POPサーバーから削除してやる必要もあります) メール受信の仕組みの理解が必要で、PHPだけの技術だけでは完結しないので、 難しいといえば難しいですね。

tinpu
質問者

お礼

superside0さん、ありがとうございます。 とても良いヒントになりました。 ちなみにこうしたら成功しました。 --form.html-- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Insert title here</title> </head> <body> <form action="upld.php" enctype="multipart/form-data" method="post"> <input type="file" name="sendfile[]" /><br /> <input type="file" name="sendfile[]" /><br /> <input type="file" name="sendfile[]" /><br /> <input type="submit" value="送信" /><br /> </form> </body> </html> --upld.php-- <?php for ($i = 0; $i < count(@$_FILES['sendfile']['name']); $i++) { $error = ''; if (!isset($_FILES['sendfile']['name'][$i])){ echo 'ファイルが見つかりません。'; exit; } $fname = $_FILES['sendfile']['name'][$i]; $temp = $_FILES['sendfile']['tmp_name'][$i]; $target = './images/' . $fname; if (move_uploaded_file($temp,$target)){ echo $fname .' ', "をアップロードしました。<br />"; } else { echo "アップロードに失敗しました。"; } } ?> あとPHPのバージョンは5.3の間違いでした。 単純なキーボードの打ち間違えでした、すみません(/_\) メールの自動受信については ホームページのメールフォームにお客様が記入をし送信ボタンを押すと問合せや注文メールが会社へ届くようにしたいと思い勉強しています。 メール自動送信がPHPとphp.iniで割と簡単にできたので受信も良い方法があるのではないかと思い聞いてみました。 現在OCNのメールアカウントを使用しており仕組みについては深くは理解出来ておりません。 現状では難しそうですね。

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

全然ちがう内容を一緒に質問しない方がいいですね 複数ファイルのアップロード type=fileのフィールドを複数用意するだけです。 名前の付け方は2つあり、一つはユニークにつける、 もうひとつは[]をつけて同じ名前にする 実際にテストでアップしてみれば違いがわかるかと思います。 <form enctype="multipart/form-data" method="post"> <input type="file" size=40 name="sendfile1" /> <input type="file" size=40 name="sendfile2" /> <input type="submit" value="送信" /> </form> <form enctype="multipart/form-data" method="post"> <input type="file" size=40 name="sendfile[]" /> <input type="file" size=40 name="sendfile[]" /> <input type="submit" value="送信" /> </form> <? print_r($_FILES); ?>

tinpu
質問者

お礼

yambejpさん、 まったく違う質問を一度に行い申し訳ありません。 教材(本)を読みメールの自動送信は簡単に出来たのですが、受信の方法は何一つ載っていなかったので何か手本となる物がほしくて一緒に質問してしまいました。 以後気を付けます。

関連するQ&A