• 締切済み

スマホサイトでの画像をPOST

スマホサイトで画像アップロードのフォームを作成しています。 5つほど添付できるようにしています。 form.php <form action="./send.php" method="post" enctype="multipart/form-data" novalidate="novalidate"> 画像<br> <?php for($i = 1; $i <= 5; $i++) { echo '<input type="hidden" name="item_img_name[' .$i. ']" value="' .$_SESSION['item_img_name'][$i]. '">'."\n"; echo '<input type="file" name="item_img[' .$i. ']" id="item_img_' .$i. '" value=""><br>'."\n"; } ?> <input type="submit" value="送信"> </form> 以上の内容でフォームを作成しております。 問題なのが、サブミットした際send.phpに切り替わるのがかなり遅く大変困っています。 1つにつき2MGの画像サイズを早くPOSTさせる方法はありませんでしょうか。

  • PHP
  • 回答数3
  • ありがとう数7

みんなの回答

  • ONEONE
  • ベストアンサー率48% (279/575)
回答No.3

2MBはでかいですね。 それをbase64に変換してDBに入れるのも結構重い処理なのではと思います。 その画像はアップしたサイズのままがいいのでしょうか? 圧縮してもよいのならクライアント側で圧縮するのが良いでしょう。 FILE APIが使える場合(IEだとIE10以上)に下記URLが使えます。 http://www.egashira.jp/2013/03/image-resize-before-upload

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

ボトルネックがどこにあるかによります。 ・アップロードの回線が遅い ・send.phpのファイルの受け処理が遅い ・send.phpの受けた後の処理が遅い いくつかのパターンでテストプログラムを組んで問題のきりわけをしてみてください またセッションを利用しているようですが、ロジックの記載がないため どう作用しているかわからず、もしかしたらそのあたりが足を引っ張っている 可能性もあるかも。 そもそもsend.phpは自分自身なのか、別のプログラムなのか、 別のプログラムならそのプログラムの内容を記載しなければ適切な回答はできません。

h199613
質問者

補足

ご回答有難う御座います。 >またセッションを利用しているようですが、ロジックの記載がないため 申し訳ありません、こちらはたいしたものを書いておりませんので省いております。 >どう作用しているかわからず、もしかしたらそのあたりが足を引っ張っている可能性もあるかも。 無い状態で再度試してみます。 >そもそもsend.phpは自分自身なのか、別のプログラムなのか、 >別のプログラムならそのプログラムの内容を記載しなければ適切な回答はできません send.phpにはBASE64に変換し、mysqlに登録するプログラムが入っているため、別ファイルとなります。 ただ、send.phpのプログラムが実行する前に、dump、exitを 入れているいるため、現段階ではsend.phpのプログラムが理由では無いと判断しています。 また、度重なるご質問で大変申し訳ありませんが、画像を選択した際にリサイズしてくれるajaxなどのライブラリはございますでしょうか。

回答No.1

> 1つにつき2MGの画像サイズを早くPOSTさせる方法はありませんでしょうか。 通信環境の問題です。上りが高速のプロバイダに変更するとか、専用線を引くとか、インターネット回線をなんとかする以外に方法はありません。 この方法は自分の回線だけに当てはまる方法で、閲覧するユーザーにこれを強制することは出来ませんから、多くの制作者はアップロードするファイルの容量を制限したり、アップロード自体をシームレスに行うajaxを使ってストレス軽減の工夫をします。

h199613
質問者

補足

ご解答いただき有難う御座います。 >多くの制作者はアップロードするファイルの容量を制限したり、 ユーザーにファイルの容量を落とすことは考えておらず(手間を省くため)、 その場で写真をとって、その場でアップロードするといった仕組みにしています。 >アップロード自体をシームレスに行うajaxを使ってストレス軽減の工夫をします。 この方法を何度か試したのですが、それでもストレスがたまってしまうため、 方法を探しております。

関連するQ&A

  • POSTされない

    xamppにてローカル環境でやっているのですがなぜか type="file"だけPOSTされません。 ie6とfairefox3で試しましたが取得できませんでした。 調べてみたのですが同様の事例が見つからずわからかったのですが これは何が原因なのでしょうか? ---html--- <form action="index.php" method="post" enctype="multipart/form-data"> <input type="text" name="name" /> <input type="file" name="img" /> <input type="submit" name="send" value="送信する" /> </form> ---php--- if (isset($_POST['send'])) { echo '<pre>'; print_r($_POST); echo '</pre>'; } print_r($_FILES);を試すと正常に値が表示されます。全く意味不明 なのですが何かセキュリティ上の問題などが原因なのでしょうか?

    • 締切済み
    • PHP
  • postのタイムラグ

    以下のソースでPOSTの値が取れないときがあるので困っています。 具体的にはページを表示してから30秒程度待ってからの クリックじゃないとPOSTの値が取れません。 GETの場合はページ表示後すぐにボタンをクリックしても大丈夫でした。 原因が分からず途方に暮れています。 お知恵をお貸しください。 PHP Version 5.2.3 <?php $P_data = $_POST["pg"]; print("POST=>".$P_data."<BR>"); $G_data = $_GET["pg"]; print("GET=>".$G_data."<BR>"); print <<< DOC_END <html> <head> </head> <body> DOC_END; echo"<form action=test.php method=post>"; echo"<input type=hidden name=pg value=1>"; echo"<input type=submit value=あ>"; echo"</form>"; echo"<form action=test.php method=post>"; echo"<input type=hidden name=pg value=2>"; echo"<input type=submit value=い>"; echo"</form>"; echo"<form action=test.php>"; echo"<input type=hidden name=pg value=3>"; echo"<input type=submit value=う>"; echo"</form>"; echo"<form action=test.php>"; echo"<input type=hidden name=pg value=4>"; echo"<input type=submit value=え>"; echo"</form>"; print <<< END </body> </html> END; ?>

    • 締切済み
    • PHP
  • POST からの受け渡しができません・・・

    教えてくださいm(__)m <FORM action="<? echo $PHP_SELF; ?>" method="POST"> :(ここにはif文がはいっています。) : print "お名前:<BR>\n"; print "<input type=\"text\" name=\"handle\" size=\"16\" maxlength=\"30\" value=\"<? echo ($handle); ?>\"><br><br>\n"; print "性別:<BR>\n"; for (reset ($sex_tbl); $key = key ($sex_tbl); next ($sex_tbl)) { echo (" <OPTION value=\"" . $key . "\""); if ($key == $sex) echo (" SELECTED"); echo (">" . $sex_tbl[$key] . "\n"); } print "PRポイント:<BR>\n"; print "<input type=\"text\" name=\"pr\" size=\"16\" maxlength=\"30\" value=\"<? echo ($pr); ?>\"><br><br>\n"; print "<CENTER><input type=\"submit\" value=\"次の人!\"></CENTER><br>\n"; print "<input type=\"hidden\" name=\"page\" value=\"kekkapage\">\n"; print "<input type=\"hidden\" name=\"handle\" value=\"" . $_POST['handle'] . "\">\n"; print "<input type=\"hidden\" name=\"sex\" value=\"" . $_POST['sex'] . "\">\n"; print "<input type=\"hidden\" name=\"pr\" value=\"" . $_POST['pr'] . "\">\n";←80 </FORM> : : ↑なのですが、 「・・・on line 80」エラー表示になりうまくいきません。 の部分が原因と表示にはなっているのですが…。 助けてください。 宜しくお願いしますm(__)m

    • ベストアンサー
    • PHP
  • php $_SESSIONで値が消える。

    いつもお世話になり誠にありがとうございます。 標記の件。 インプット画面ー>確認画面ー>戻るー>インプット画面 インプット画面に戻った時、どうしても最初のインプット画面で打った内容が消えてしまいます。 プログラムを診て、誤りを指摘して頂けないでしょうか? どうぞよろしくお願い致します。           記 <?php session_start(); $mode = 'input'; if( isset($_POST['back']) && $_POST['back'] ){ //何もしない } else if( isset($_POST['confirm']) && $_POST['confirm'] ){ $_SESSION['name'] = $_POST['name']; $_SESSION['email'] = $_POST['email']; $_SESSION['category']= $_POST['category']; $_SESSION['message'] = $_POST['message']; $mode = 'confirm'; } else if( isset($_POST['send']) && $_POST['send'] ){ $mode = 'send'; } else { $_SESSION['name'] =""; $_SESSION['email'] =""; $_SESSION['category']=""; $_SESSION['message'] =""; } ?> <!DOCTYPE html> <html lang="ja"> <head> </head> <body> <div class="v_line_fix"> <h1>Blog K・T</h1> <h2><a href="index.html">トップページ</a></h2> <?php if( $mode=='input'){ ?> <form method=post> お名前(ニックネーム)<br> <input type="text" name="name" value="<?php echo $_SESSION['name'] ?>"><br> Eメール<br> <input type="email" name="email" value="<?php echo $_SESSION['email'] ?>"><br> カテゴリー<br> <input type="text" name="category" value="<?php echo $_SESSION['category'] ?>"><br> 本文<br> <textarea style="font-size:1.5em;" cols="30" rows="80" name="message"><?php echo $_SESSION['message'] ?></textarea><br> <input type="submit" name="confirm" value="確認" /> </form> <?php }else if( $mode=='confirm'){ ?> <!--確認画面--> <form method="post"> <?php echo $_SESSION['name']?><br> <?php echo $_SESSION['email']?><br> <?php echo $_SESSION['category']?><br> <br> <?php echo nl2br($_SESSION['message'])?><br> <input type="submit" name="back" value="戻る"/> <input type="submit" name="send" value="送信"/> } </form> <?php } else { ?> <!--完了画面--> <?php } ?> </body> </html>

    • ベストアンサー
    • PHP
  • 画像の保存についての質問です。

    ----get_bk_img.php---- ・・・・・ ・・・・・ <table width="740" border="0" cellspacing="0" cellpadding="0" align="center"> <tr> <td> <a href="../index.html">TOP PAGE</a><br><br> <strong>保存する物件の写真を設定してください</strong><br> <?php $add_temp = $_FILES['up_fl']['tmp_name']; $add_name = $_FILES['up_fl']['name']; $add_type = $_FILES['up_fl']['type']; echo "temp:[".$add_temp."]<br>\n"; echo "name:[".$add_name."]<br>\n"; echo "type:[".$add_type."]<br>\n"; /*------------------------*/ /* -- データベース接続 -- */ /*------------------------*/   ・・・・・・・・   ・・・・・・・・   ・・・・・・・・ /*------------------------*/ /* -- データベース切断 -- */ /*------------------------*/ mysql_close($db); ?> <table width="740" border="1" cellpadding="15" bordercolor="#333333" align="center" cellspacing="0"> <form name=form1 method=post action=get_bk_img.php> <tr> <td bgcolor="#00CCFF">ファイル選択</td> <td bgcolor="#FFFFFF"> <input type=file name=up_fl value=""> <input type=hidden name=action value=hozon> <input type=hidden name=no value="<?php print($_POST['no']) ?>" > <input type=submit value="保存"> </td> </tr> </form> </table> <br> <table width="740" border="1" cellpadding="15" bordercolor="#333333" align="center" cellspacing="0"> <form name="form1" method="post" action="get_bk_img.php"> <tr> <td bgcolor="#00CCFF">保存ファイル一覧</td> <td bgcolor="#FFFFFF"> <select name="bu_file"> <?php print_r( $select_arr ) ?> </select> <input type="hidden" name="action" value="delete"> <input type="submit" value="削除"> </td> </tr> </form> </table> </table> </body> </html> としてるんですが、 echo "temp:[".$add_temp."]<br>\n"; echo "name:[".$add_name."]<br>\n"; echo "type:[".$add_type."]<br>\n"; の部分で表示されません。(値が空?) 書き方が間違ってますか?

    • ベストアンサー
    • PHP
  • 候補画像から選択して画像をアップロード

    通常、画像のアップロードは <form action="upload.php" method="post" enctype="multipart/form-data"> <p> 画像をアップロードする<br> <input type="file" name="pic"> </p> <p> <input type="hidden" name="code" value="<?php echo $code ?>"> <input type="submit" name="submit" value="アップロード"> </p> </form> というフォームを使っています。 ↓ ★画像アップロードフォーム http://pips.chu.jp/0/up/upload.php これで、「参照」を押すと、ローカルのフォルダから画像を選べますが、 あらかじめ作成した画像の候補の中から1つ選んでアップロードするにはどうすればよいでしょうか。 画像の候補は、「img」というフォルダを作り、その中に格納しています。 ↓ ★候補画像 http://pips.chu.jp/0/up/img/sample1.jpg http://pips.chu.jp/0/up/img/sample2.jpg http://pips.chu.jp/0/up/img/sample3.jpg 「参照」のボタンを押すと、「img」フォルダに行く方法が知りたいです。 また、ラジオボタンやセレクトボタンを使った方法があれば教えて頂けないでしょうか。 何卒よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHP+HTMLの確認画面から入力画面に戻る際のデータ保持について質問

    PHP+HTMLの確認画面から入力画面に戻る際のデータ保持について質問致します。 1.入力→2.確認→3.実行の3ページを作成しましたが、 2.確認で入力した値が間違っていた場合、1.入力に戻って訂正する仕様です 私は2.確認の戻るボタンにjavaのhistory.back();を使ったのですが ブラウザやOSにより、戻った際にデータが保持されていない場合があるとの事だったので 他の方法がないかご教授下さい。サンプルコードを書いて頂くと助かります。 以下、作成したコード 1.入力画面(mail.html) <html> <body> <form action="chk.php" method="post"> 件名:<br> <input type="text" name="subject" size="30" value=""><br> 送信者名:<br> <input type="text" name="name" size="30" value=""><br> メールアドレス:<br> <input type="text" name="mail" size="30" value=""><br> 本文:<br> <textarea name="message" cols="30" rows="5"></textarea><br> <br> <input type="submit" value="確認する">&nbsp&nbsp<input type="reset" value="クリア"> </form> </body> </html> 2.確認画面(chk.php) <?php $name = $_POST["name"]; $message = $_POST["message"]; $subject = $_POST["subject"]; $mail = $_POST["mail"]; ?> <html> <body> <form action="send.php" method="post"> 件名:<?php echo $subject; ?><br> 送信者名:<?php echo $name; ?><br> メールアドレス:<?php echo $mail; ?><br> 本文:<?php echo $message; ?><br> <input type="submit" value="これでOK"> &nbsp&nbsp //下記の戻るボタンで戻るとデータ保持をするようにしたい。history.back以外で。 <input type="button" value="戻る" onclick="history.back();"> <input type="hidden" name="name" value="<?php echo $name; ?>"> <input type="hidden" name="message" value="<?php echo $message; ?>"> <input type="hidden" name="subject" value="<?php echo $subject; ?>"> <input type="hidden" name="mail" value="<?php echo $mail; ?>"> </form> </body> </html> 3.送信画面(send.php) <?php mb_language("Japanese"); mb_internal_encoding("UTF-8"); $message = "名前:" . $_POST["name"] . "\n本文:" . $_POST["message"]; if (!mb_send_mail("hoge@example.com", $_POST["subject"], $message, "From: " . $_POST["mail"])) { exit("メールの送信に失敗しました。"); } ?> <html> <body> <p>メールが送信されました。</p> </body> </html> 初心者ですので、わかりやすい表記をお願い致します。

    • 締切済み
    • PHP
  • PHPでのCookie

    PHPでクッキーを使い、下記のような入力フォームを作りました。 form.phpで入力→form2.phpで正常出力出来るのですが、 form2.phpで一度更新しないと、結果が画面に表示されません。 これをform2.phpを開いた時点で表示されるようにするには、どのように書けばいいのでしょう。 後1つあります。form.phpで 「テスト&1」と書くと「テスト」としか表示されなく、&とそれ以降が記憶されません。 これはなぜでしょうか? お願いします。 【form.php】 <?PHP parse_str($_COOKIE["city"]); parse_str($_COOKIE["city_name"]); ?> <html> <form method="post" action="form2.php"> <?PHP echo "名前1<input type=text name=name1 maxlength=16 size=12 value=$set_name1> <BR>ID<input type=text name=p1 maxlength=8 size=6 value=$set1><BR><BR>"; echo "名前2<input type=text name=name2 maxlength=16 size=12 value=$set_name2> <BR>ID<input type=text name=p2 maxlength=8 size=6 value=$set2>"; ?> <input type="submit" value="実行"> </form> </html> 【form2.php】 <?php if ($_POST) { $city1 = $_POST["p1"]; $city2 = $_POST["p2"]; $city_name1 = $_POST["name1"]; $city_name2 = $_POST["name2"]; setcookie ("city", "set1=$city1&set2=$city2",time()+3600*24*90); setcookie ("city_name", "set_name1=$city_name1&set_name2=$city_name2",time()+3600*24*90); } parse_str($_COOKIE["city"]); parse_str($_COOKIE["city_name"]); echo $set_name1; echo $set1; echo $set_name2; echo $set2; ?>

    • ベストアンサー
    • PHP
  • PHPでの画像出力について

    すいません。初めてphpを勉強しているのですが下記の表記で画像が出るはずなんですが 上手く出力されません。(ブラウザfirefoxで確認していますが、画像が見つからないマーク?みたいなのが出ています) 当方XAMPPというのを使っておりまして、echo "<img src=\"K3\">";の部分を単純に文字出力 などに変えるとちゃんと文字が出ます。 出力させたい画像名はk3.jpgです。 画像の置き場所はhtdocsフォルダ内(123.php、test10.phpのファイルがある場所)でいいのですよね? どなたか分かる方いましたらよろしくお願いします。 ファイル名 123.php <FORM ACTION="test10.php" METHOD="POST"> <INPUT type="radio" NAME="ss" VALUE="se">レッド <INPUT type="radio" NAME="ss" VALUE="ch">ブルー <INPUT type="radio" NAME="ss" VALUE="pi" CHECKED>ピンク <INPUT type="submit" VALUE="並び替える"> </FORM> ファイル名 test10.php <?php $_POST['ss']; $a = $_POST['ss']; if( $a == pi ){ echo "<img src=\"K3\">"; } ?>

    • ベストアンサー
    • PHP
  • POSTでwarning!

    いつも大変お世話になり誠にありがとうございます。 また、同じような質問で申し訳ありません。 標記の件。 ブログフォームのソースは下記です。 表示のソースも下記です。 どうすれば表示されるでしょうか? ご回答のほど宜しくお願い申し上げます。        記 <h2>ブログフォーム</h2> <form action="blog_create.php" method=_POST> <label>ペンネーム:</label> <input type="text" name="name" value=""><br> <label>タイトル:</label> <input type="text" name="title" value=""><br> <label>カテゴリー:</label> <input type="text" name="category" value=""><br> <label>ブログ本文:</label><br> <textarea name="content" id="content" cols="50" rows="80"></textarea><br> <input type="submit" value="確認画面へ"> <?php $name = $_POST["name"]; $title = $_POST["title"]; $category = $_POST["category"]; $content = nl2br($_POST["content"]); echo "ペンネーム{$name}"; echo "タイトル{$title}"; echo "カテゴリー {$category}"; echo "本文 {$content}"; ?> <hr> <br> <input type="submit" action="/kanryou.php" value="送信する"> Warning: Undefined array key "name" in C:\xampp\htdocs\blog_create.php on line 13 Warning: Undefined array key "title" in C:\xampp\htdocs\blog_create.php on line 14 Warning: Undefined array key "category" in C:\xampp\htdocs\blog_create.php on line 15 Warning: Undefined array key "content" in C:\xampp\htdocs\blog_create.php on line 16 ペンネームタイトルカテゴリー 本文

    • ベストアンサー
    • PHP

専門家に質問してみよう