PHPでフォームから画像を削除する方法とは?

このQ&Aのポイント
  • PHPのフォームからアップロードされた画像を削除する方法について教えてください。
  • フォームにアクセスするたびに表示される画像の中から、特定の画像を選んで削除する方法を知りたいです。
  • チェックボックスやJavaScript以外で、デザインを崩さずに画像を削除する方法があれば教えてください。
回答を見る
  • ベストアンサー

PHPでフォームから任意の画像削除方法

複数画像がアップロード出来るフォームがあります。 そのフォームはユーザがアップした画像は、フォームにアクセスする度に表示されます。 <form action="upload.php" method="post" enctype="multipart/form-data"> ファイル:<br /> <input type="file" name="upfile" size="30" /><br /> <input type="reset" name="resetfile" value="削除" /><br /> <input type="file" name="upfile" size="30" /><br /> <input type="reset" name="resetfile" value="削除" /><br /> <br /> <input type="submit" value="アップロード" /> </form> 2つの画像をサーバにアップした段階で 2つ目の削除ボタンを押した時に、2つ目の画像だけを削除したいのですが、良い方法が思いつきません。 代替案はチェックボックスですが、デザインが崩れるので避けたいと思っています。 または、javascriptで出来るようですが、あまり得意でないので、出来れば避けたいと思っています。 良い方法があれば、ご教授お願いします。

  • PHP
  • 回答数2
  • ありがとう数1

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

  • ベストアンサー
noname#244856
noname#244856
回答No.1
gchan_55
質問者

お礼

ああ~!質問ページでは画像が見れなくて気がつきませんでしたが、あなたでしたか!(お礼のページだと画像出ました) Qiitaでは、よく参考にさせて貰っています。回答ありがとうございました。 コピペで動くやつが、まさに知りたかった事です。本当に助かりました。 ファイルはユーザごとに分けているのですが、DBパスのみ格納する方法でなんとかやってます。

gchan_55
質問者

補足

あ・・・、質問ページは元々画像表示ないのですね(笑)

その他の回答 (1)

noname#244856
noname#244856
回答No.2

もしユーザーごとに管理を行うのであれば、所有者が明確に分かるように画像データ自体をMySQLに入れたほうがいいかも… http://qiita.com/mpyw/items/117ab6a88fd58d911c34

関連するQ&A

  • PHP 画像アップロード 重複防止

    画像、ファイルをアップロードできるフォームを作成しています。 ---------------------- フォーム <FORM NAME="objform" action="yes.php" METHOD="POST" ENCTYPE="multipart/form-data"> <INPUT TYPE="hidden" NAME="MAX_FILE_SIZE" VALUE="1000000"> <INPUT TYPE="file" NAME="img1" SIZE="40"><BR> <INPUT TYPE="submit" NAME="submit" VALUE="アップロードする!!"> </FORM> ーーーーーーーーーーーーーーーーーーーー yes.phpの中身 $updir = "./photo/"; $filename = $_FILES['upfile']['name']; //form の「upfile」の値 move_uploaded_file($_FILES['upfile']['tmp_name'], $updir.$filename); -------------------------- これでphoto のフォルダに格納されるようにしているのですが、 もし、同じファイル名でアップされた場合上書きされてしまいます。 IDをつけるか、もしくはその他の方法でファイル名が重複されないような設定にするにはどうすればよいでしょうか。 現在PHP勉強中です。 初歩的なことかもしれませんが、 よくわからないのでアドバイスを頂けると助かります。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • WEBサイトからファイルマネージャへ直接画像をアップロードするには

    はじめまして。 自分のサイトのページからファイル参照をし、 [<FORM method="POST" enctype="multipart/form-data" action="img_upload.php"> <INPUT type="hidden" name="MAX_FILE_SIZE" value="65536"> 画像のファイル名を入力してください(最大64KByte) <INPUT size="30" type="file" name="upfile"><BR> <BR> <INPUT type="submit" name="submit" value="送信"> <INPUT type="reset" name="reset" value="リセット"> </FORM>] 自分の借りているレンタルサーバにあるファイルマネージャへ直接画像をアップし、 違うページで表示させたいのですが可能でしょうか。 サンプルソースや参考になるサイトを教えていただけるとありがたいです。 どうかよろしくお願いいたします。

  • PHP 画像添付フォームに関しての質問です。

    PHP 画像添付フォームに関しての質問です。 http://okwave.jp/qa/q4891926.html 以前質問させて頂いた内容でフォームを作成しています。 申込html→finish.php の場合はうまくいきます。 申込html→確認→finish.php にするとうまくいきません。 可能であれば、確認画面でアップした画像を表示できればと思っております。 何かアドバイスして頂けると助かります。 申込html <form method="post" action="kakunin.php" enctype="multipart/form-data"> <input type="hidden" name="max_file_size" value="1000000"> <input type="hidden" name="upfile" value="%%upfile%%"> <input name="upfile" id="upfile" type="file" size="50" value="%%upfile%%"> 確認html <form method="post" action="finish.php"> <td class="border5px-fff">%%upfile%%<input type="hidden" name="upfile" value=""></td> finish.php $updir = "./photo/"; $filename = $_FILES['upfile']['name']; //form の「upfile」の値 //ファイルを指定 $id_file = "id.dat"; //ファイルを開く $fp = fopen($id_file,"r"); $id = fgets($fp); fclose($fp); //ファイルの数字に1を足します。 $id = $id + 1; $fp = fopen($id_file,"w"); //保存します。 fputs($fp, $id); fclose($fp); //名前の前に番号を追記します。 //$filename = 'ID_'.$id.'_'.$filename; //番号のみ $filename = $id.'.jpg'; move_uploaded_file($_FILES['upfile']['tmp_name'], $updir.$filename);

    • ベストアンサー
    • PHP
  • 画像アップ

    php初心者です 簡単な画像アップロードを付けたいと思っています それでアップだけはなんとかできたのですが、もう少し機能を付けたいです 付けたい機能は 1.拡張子を調べて限定したい。gif、jpg、pngの三つを許可したい 2.画像の横と縦の幅が指定した幅より大きければ、指定した幅まで縦横比維持で縮小 100*100 3.もう一つのディレクトリに、小さいサムネイルを作りたい。大きさは32*32です 4.拡張子はそのままにして画像の名前をリネームしたいです よろしくお願いします(_ _ <?php $img_name = $_FILES["upfile"]["name"]; $img_size = $_FILES["upfile"]["size"]; $img_type = $_FILES["upfile"]["type"]; if($_REQUEST["up"] != ""){ if($img_tmp != "" and $img_size <= 50000){ $img_message = "名前は: $img_name <br>サイズは: $img_size <br>MIMEタイプは: $img_type"; if (is_uploaded_file($_FILES["upfile"]["tmp_name"])) { if (move_uploaded_file($_FILES["upfile"]["tmp_name"], "files/" . $_FILES["upfile"]["name"])) { chmod("files/" . $_FILES["upfile"]["name"], 0604); print $_FILES["upfile"]["name"] . "をアップロードしました。"; } else { print "ファイルをアップロードできません。"; } } else { print "ファイルが選択されていません。"; } }else{ $size_error = "サイズが大きすぎます"; } } ?> <html> <head> <title>画像アップロード</title> </head> <body> <form name="form" action="" method="POST" ENCTYPE="MULTIPART/FORM-DATA"> <input name="upfile" type="file" size="40"> <input name="up" type="submit" value="アップロード"><hr> </form> <?php print($size_error); ?><?php print($img_message); ?> </body> </html>

    • ベストアンサー
    • PHP
  • PHP重複ファイルに連番をつけてアップロードしたい

    ファイルをアップロードするページをPHPで作りました。 testup.htmlでファイルを選択し、 testup.phpでファイルをサーバーにアップする 簡単な仕組みです。 アップロードには成功したのですが、 同じファイル名のデータがある場合、上書きされてしまいます。 上書きされずに、連番等をファイル名に追加してアップロード できればと思いましたが、方法がわかりません。 当方PHPの初心者です。何卒お力をお貸しください。 よろしくお願い致します。 ソースを記入しておきます。 「testup.html」 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>test</title> </head> <body> テストアップローダー<br> <form action="testup.php" method="post" enctype="multipart/form-data"> アップロードするファイルを選択してください。 <br> <input type="file" name="upfile" size="30"><br> <br> <input type="submit" value="アップロード"> <label>  <input type="reset" name="button" id="button" value="リセット" /> </label> </form> </body> </html> 「testup.php」 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>test</title> </head> <body> <p><?php if (is_uploaded_file($_FILES["upfile"]["tmp_name"])) { if (move_uploaded_file($_FILES["upfile"]["tmp_name"], "files/" . $_FILES["upfile"]["name"])) { chmod("files/" . $_FILES["upfile"]["name"], 0777); echo $_FILES["upfile"]["name"] . "をアップロードしました。"; echo "<br><br>ありがとうございました。"; echo "<br><FORM><INPUT TYPE=button value=閉じる onClick=window.close()></FORM>"; } else { echo "ファイルをアップロードできません。"; echo "<br>お手数ですが前の画面に戻ってもう一度ファイルをアップロードしてください。"; echo "<br><FORM><INPUT TYPE=button value=前のページに戻る onClick=JavaScript:history.back()></FORM>"; } } else { echo "ファイルが選択されていません。"; echo "<br>お手数ですが前の画面に戻ってファイルを選択してください。"; echo "<br><FORM><INPUT TYPE=button value=前のページに戻る onClick=JavaScript:history.back()></FORM>"; } ?></p> </body> </html>

    • ベストアンサー
    • PHP
  • 画像ファイルアップロード

    PHP初心者です。以下のスクリプトを参考書を参考に記述しました。リンクでtmpfileが表示されるのはわかるのですが、このファイルに画像を表示するにはどうしたらいいですか?<img src="">で表示されなかったので、他に表示方法はあるのですか?また画像を表示したときにimagecopyresampled();を使ってサイズを設定したいと思っています。 <?php print <<<HTML <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis" /> <title>ファイルのアップロード</title> </head> <body> <p>ファイルのアップロード</p> <form method="post" enctype="multipart/form-data" action="index.php"> <input type="hidden" name="maxfilesize" value="10000" /> アップする写真データ<br> <input size="30" type="file" name="upfile" /><br /> <input type="submit" name="submit" value="送信" /> <input type="reset" name="reset" valuie="リセット" /> </form> HTML; if($submit !=""){ if($submit == "none"){ print"ファイルのアップロードができませんでした。"; exit; } copy($upfile,"tmpfile.txt"); print"アップロードされたファイルの情報<br>"; print"ファイル名:$upfile_name<br>"; print"ファイルサイズ:$up_size<br>"; print"ファイルタイプ:$up_type<br>"; print"<a href=\"tmpfile\">ファイルへリンク</a><br>"; } print <<<HTML </body> </html> HTML; ?>

    • ベストアンサー
    • PHP
  • VBAでアップロード

    ホームページ作成をしているのですが、ローカルにあるhtmlファイルをvbaでアップロードしたいのですが やり方がよくわかりません。 ソースは *************************************************************** <TABLE border=0 cellSpacing=0 cellPadding=0 width=650> <TBODY> <TR vAlign=top> <TD width="50%"> <TABLE style="FONT-SIZE: 12px" border=0 cellSpacing=1 cellPadding=3 width=323 bgColor=#ff6600> <FORM encType=multipart/form-data method=post action=/tok2_ftp/index.php> <INPUT name=act value=upload type=hidden> <INPUT name=MAX_FILE_SIZE value=300000 type=hidden> <INPUT name=dirname value=/ type=hidden> <TBODY> <TR align=center> <TD bgColor=#ffcc66>ファイルアップロード</TD></TR> <TR align=center> <TD class=line-height1 bgColor=#ffffff> <BR>アップロード可能なサイズは、1ファイル300kbまでです。<BR> <FONT color=#ff0000>※既に同じファイル名が存在する場合は上書きされます。</FONT> <BR><BR> <INPUT name=upfile[] size=40 type=file><BR> <INPUT name=upfile[] size=40 type=file><BR> <INPUT name=upfile[] size=40 type=file><BR> <INPUT name=upfile[] size=40 type=file><BR> <INPUT name=upfile[] size=40 type=file> <BR><BR><INPUT style="WIDTH: 150px" value=アップロード type=submit> <BR><BR></TD></TR></FORM></TBODY></TABLE></TD> *************************************************************** このような感じなのですが、 VBAで objIE.document.all("upfile[]")(0).Value = "test" 'エラーにならないけど値も入らない objIE.document.forms(0).all("upfile[]")(0).Value = "test" 'エラーにならないけど値も入らない 'objIE.document.forms(0)("upfile[]").Value = "test" 'エラー 'objIE.document.all("upfile[]").Value = "test" 'エラー objIE.document.forms(0).submit '押せる こんな事をやってみましたが、値を入れる事ができません。 解決方法を教えてください。

  • onclickイベントで、PHPの関数をコール

    下記のようなPHPスクリプトで、ボタンが押された時の、onclickイベントで<?php upload_file() ?>として PHPのupload_file() 関数をコールしてるのですが、画像ファイルがアップできません。 どこが間違いなのか、教えていただけますか。 --------------------------------------------------------------------------------- <form name="form2" method="POST" enctype="multipart/form-data" action="bbs.php"> <!-- ファイル参照フォームを表示する --> <input type="hidden" name="MAX_FILE_SIZE" value="30000"> <input type="file" name="upfile" tabindex="6"> <input type="button" value="画像を送信" tabindex="7" onclick="<?php upload_file() ?>"> </form>

    • 締切済み
    • PHP
  • 【PHP】postで連想配列のキーを送信したい

    PHP初心者です。 (実は似たような質問を以前yahoo知恵袋さんで投げた者です) ファイルのアップロードフォームを作っています。 まず、セレクトボックスを作り、セレクトボックスで選んだ値によって、 アップロード先を分けたいと思っています。 セレクトボックスで「理科」を選んでアップロードしたファイルは フォルダ「001」に、セレクトボックスで「数学」を選んでアップロードした ファイルはフォルダ「002」に入る、いう具合です。 セレクトボックスを連想配列を使って作り、 フォルダ分けは連想配列のキーの値を使うことによって解決しようとして 下のように作ってみたのですがうまくいきません。 どうすればよいでしょうか? よろしくお願いします。 **アップロードフォーム** <select name="subjects" id="subjects"> <?php $subjects = array('001'=>'理科','002'=>'数学','003'=>'英語'=>'); foreach ($subjects as $subject) { print('<option value="'.$subject.'">'.$subject.'</option>'); } ?> </select> <form action="./upload.php" method="post" enctype="multipart/form-data"> <input type="file" name="upfile" size="30px"/><br/> <input type="file" name="upfile" size="30px"/><br/> <input type="file" name="upfile" size="30px"/><br/> <button type="submit"> 送信</button> </form> **受信側** <?php $subjects = array('001'=>'理科','002'=>'数学','003'=>'英語'=>'); $keyNum = array_search($_POST['subjects'], $subjects); if( isset( $_FILES["upfile"] ) ) { foreach( $_FILES["upfile"]["error"] as $key => $error ) { if( $error == UPLOAD_ERR_OK ) { $tmp_name = $_FILES["upfile"]["tmp_name"][ $key ]; $name = $_FILES["upfile"]["name"][ $key ]; if (move_uploaded_file($tmp_name, "$keyNum/" . $name)); { echo $_FILES["upfile"]["name"] . "アップロード完了"; } } } } ?>

    • ベストアンサー
    • PHP
  • PHPとMySQLを使い、画像データベースを構築しています。

    PHPとMySQLを使い、画像データベースを構築しています。 以下までできたのですが、SQL syntaxエラーが発生してしまい、UP出来ませんでした。 画像を指定しない場合は、成功します。 <form method="post" action="addinfo.php" enctype="multipart/form-data"> Place Name(*)<br> <input type="text" size="50" maxlength="100" name="place_name"><br> Address(*)<br> <input type="text" size="50" maxlength="100" name="address"><br> Pictures<br> <input type="file" size="50" name="picture1"><br> <input type="file" size="50" name="picture2"><br> <input type="file" size="50" name="picture3"><br> <input type="reset" value="Reset" name ="reset"> <input type="submit" value="Submit" name="submit"> </form> <?php if ($_POST["submit"] != "") { // Connecting DB require 'lib.php'; //img1 if ($_FILES["picture1"]["tmp_name"] != NULL) { $fp = fopen($_FILES["picture1"]["tmp_name"], "rb"); if (!$fp) { print("Cannot open the uploaded file <BR>\n"); exit; } $img1 = fread($fp, filesize($_FILES["picture1"]["tmp_name"])); fclose($fp); } ----------------------------------------------------------- img2, img3についての処理もimg1と同じなので、文字数の関係で省略します ----------------------------------------------------------- // Insert Query $sql = "INSERT INTO places (place_name, address, `picture1`, `picture2`, `picture3`) VALUES('{$_POST["place_name"]}','{$_POST["address"]}', '{$img1}', '{$img2}', '{$img3}') "; $result = mysql_query($sql); if (!$result) { print("QUERRY ERROR<BR>\n"); print(mysql_errno() . ": " . mysql_error() . "<BR>\n"); exit; } echo "UPLOAD SUCCESSFULL "; ご教授お願いいたします

    • ベストアンサー
    • MySQL

専門家に質問してみよう