• 締切済み

アップロードした画像の削除

フォームから画像をアップロードするものを作っています。 アップロードから画像の表示まではできているのですが 画像の削除の方法について教えてください。 単純に削除であればunlinkでいいのですが入力画面内にての 途中の工程でのいい方法がわからず困っております。。。 必須項目が5つありそのうちファイル選択が1つというのが前提です。 1・フォームからをファイルを選択 ※他の項目は空の状態 2・ファイルが選択されていれば必要なエラーチェックを行い 問題なければ一度でも送信ボタンを押したら他のフォームの値が 空でエラーがあってもファイルデータ保持のためバイナリデータ としセッションで保持した後サーバーにファイルをアップロード ※他のフォームが空なのでエラーとなり確認画面へページ移管は せず再度入力画面を表示 3・バイナリデータをもったセッションがあれば画像表示のため 別のphpファイルを読み込み入力画面中に確認用画像として表示 ※セッションを使用 4・画像表示と一緒に画像削除用のリンクを表示 ※<a href="hoge.php?action=del">削除<a> ※一度でも画像をアップロードすれば削除をクリックしセッション 削除しない限りファイルの選択は無効となる 5・削除をクリックしたら以下のソースでファイルに関しての 必要なセッション削除 if ($_GET['action'] == 'del') { // アップされたファイル削除 @unlink($_SESSION['file']['image_path']); // セッション削除 unset($_SESSION['file']); // 削除後移動 header('Location:' . $_SERVER['SCRIPT_NAME']); exit(); } これで問題なく画像は消えるのですが他のフォームに入力している 値までが削除(初期化?)されてしまいます。 ※header関数を使わなくてもアドレスがhoge.php?action=delと なるだけで結果は同じでした。 希望としては削除をクリックしたらファイルに必要なセッション のみを削除し他の入力されている項目の値残したいのですが どのような方法がありますでしょうか? 他の項目の値はセッションで保持している訳ではないのでheader 関数で移動すれば値も消えていて当然というのはわかるので実現 できる事なのかすらわからない状況です。 わかりづらい質問となってしまい申し訳ございませんが宜しく お願い致します。

  • dcx147
  • お礼率33% (214/636)
  • PHP
  • 回答数1
  • ありがとう数4

みんなの回答

  • warez
  • ベストアンサー率57% (29/50)
回答No.1

他の値もセッション変数に入れておくのはダメなのですか?

dcx147
質問者

お礼

お返事遅くなりすみませんでした^^; >他の値もセッション変数に入れておくのはダメなのですか? 他にいい方法はないものかと考えているのですが自分でもこの 方法しか思いつかないのが現状です。。。 やはりそれしかないでしょうか?

関連するQ&A

  • アップロードすると画像タグが消える

    DreamweaverCS3を使い、phpとcssでHPを制作中なのですが、 アップロードをすると特定の画像ファイルが表示されなくて困っています。 アップロードされた状態でソースを見るとイメージタグごと消えてしまっています。 いろいろ試してみました。 最初から画像(リンク)を貼り直してもダメ。 画像を新しく作りなおしてもダメ。(ファイル形式変更) その箇所だけCSSを切ってみてもダメ。 新しい単なるhtmlファイルに色々な画像を付けてアップロードしてみると貼りたい画像だけが表示されないのと、 該当ファイルのどこにどんな画像を入れても表示されません。 Dreamweaverが勝手に裏でファイルのリンクを操ってるとかいうことはないでしょうか? サイトの定義でデザインノートの保持と、同期情報の保持をチェック外して関連ファイルも削除したのですが、まだ他に何かあるのか、原因が分からないでいます。 よろしくお願いします。

  • 画像の削除

    PHPでアップロードした画像をunlinkという関数で削除しようとしています。 ところがエラーが表示されて削除されません Operation not permitted in・・・ と表示されます。 ちなみにアップロードの際は chmod($sendpath,0666); として権限を考慮したつもりなのですが・・ よろしくお願いします。

    • ベストアンサー
    • PHP
  • インラインフレーム内のセッション

    通常のHTMLファイルのインラインフレーム内に、別サーバーからPHPファイルを取得して表示しています。 そのPHP自体は簡単なアンケート(フォーム→入力内容確認→送信)なんですが、このフォーム→入力内容確認の遷移がうまくいきません。 セッションでフォーム内の値と送信ボタンの値(sub)を保持し、確認のファイルに if(@$_SESSION['sub']!=TRUE){ header("location:form.php"); exit(); }else{ (以下略) } と記述することで、もしURL直打ちの場合はフォームの入力画面に飛ばされるようにしてあるのですが、インラインフレームの中でフォームに入力して送信ボタンを押すと、強制的に同じ画面に戻ってしまうのです。 直接ブラウザで該当のPHPを見たときは、何の問題もなく動くので、プログラム自体にエラーがあるわけではないと思うのですが・・・。 どうも確認ファイルのif(@$_SESSION['sub']!=TRUE)で、セッションがうまく保持されていないためにheaderで飛ばされてしまっているらしいのですが、インラインフレーム内でセッションを利用するときはどうすればいいのでしょうか?

    • ベストアンサー
    • PHP
  • 画像をアップロードする度に古い画像を削除

    お世話になっております。 とあるサイトのソースを参考に画像のリアルタイムプレビューを作成しました。 画像を上げプレビューを表示することはできたのですが画像を上げる度に次々と表示される画像が増えてしまいます。 画像を新しく上げる場合は以前に入っていた画像を削除する、 もしくは最後に上げた画像のみをプレビュー表示する方法はありますでしょうか? unlinkを使用して削除を考えたのですが、 削除とアップロードの両立ができませんでした。 以下が使用しているソースになります。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>jQuery.uploadのサンプル</title> <script type="text/javascript" src="./js/jquery-1.7.1.min.js"></script> <script type="text/javascript" src="./js/jquery.upload-1.0.2.min.js"></script> <script type="text/javascript"> $(function() { $('#file_id').change(function() { $(this).upload('upload.php', function(res) { $(res).insertAfter(this); }, 'html'); }); }); </script> </head> <body> <style> .thumb { height: 200px; border: 1px solid #000; margin: 10px 5px 0 0; } </style> <input type="file" name="upload_file" id="file_id"> </body> </html> <?php #アップロードされたファイルが存在するか if ( !is_uploaded_file( $_FILES['upload_file']['tmp_name'] ) ) { echo '<div>ファイルが選択されていません。</div>'; exit(); } #$_FILES["upload_file"]["tmp_name"]がテンポラリにあるファイル名 #$_FILES["upload_file"]["name"]がアップロード元のファイル名 #tmpからファイルをコピー move_uploaded_file($_FILES["upload_file"]["tmp_name"], "files/" . $_FILES["upload_file"]["name"]); echo '<div>'.$_FILES["upload_file"]["name"].'をアップロードしました</div>'; echo '<img class="thumb" src="files/' . $_FILES["upload_file"]["name"] . '">' ?> どなたかご回答いただけましたら幸いでございます。 どうぞ宜しくお願いします。

    • ベストアンサー
    • PHP
  • ファイルアップロード IEではなぜできない

    環境 Windows7 Webサイトからある申し込みをする際に、そのサイト内のフォームにあるファイルアップロード項目から身分証明書の画像をアップロードしようとすると、IE11ではファイルを選択する前のファイル一覧画面が出てきたところで「Internet Explorerは動作を停止しました」というポップアップ表示が出て、止まってしまいます。同じことをGoogle Chromeからこのサイトに入って行うと、こちらはすんなり画像を取り込んでアップロード送信ができます。なぜIEではできないのでしょうか?

  • 画像をアップロードしてもキャッシュを見に行ってしまう

    こんにちは。 画像をアップロードするプログラムを作っているのですが、アップロード したファイルの確認をした際、キャッシュを読み込んでしまい、古い画像 が表示されてしまいます。 ログを見るとかなり近い内容の質問がありましたが、プログラムの動きが 違うので改めて質問させて頂きます。 プログラムの構成は、a.phpから、temp1.htmlとtemp2.htmlを呼び出して 表示する仕組みです。 1)a.phpで入力フォームのタグを生成しtemp1.htmlをinclude。temp1.html  のpost先はa.php 2)a.phpは、temp1.htmlから受け取ったデータを元に、画像ファイルを  temp_updateフォルダにアップデートし、temp_update内の画像ファイル  を表示するタグを生成し、temp2.htmlをinclude。temp2.htmlのpost先は  a.php 3)temp2.htmlで確認した内容で問題が無ければa.phpでtemp_updateの画像を  updateフォルダにコピーし、処理完了。 4)temp2.htmlで確認した内容に修正が必要な場合は、入力内容を保持しつつ  入力フォームのタグを生成し、temp1.htmlをinclude。(1)に戻る) という流れになっています。 この2)の部分で、2回目の確認から、キャッシュが働いてしまい、古い画像 が表示されてしまいます。情報を更新するとtemp_updateフォルダの画像を 表示してくれますが、やはり、2)でアップロードしたデータを表示した瞬間 にtemp_updateフォルダの画像を表示するように出来ないでしょうか。 tem2.htmlのほうには、 <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Cache-Control" content="no-cache"> <meta http-equiv="Expires" content="0"> もしっかり入っています。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • Priea(プリア)でアップロードした画像が削除できない

    Prieaに写真をアップロードして、削除しようとしたのですが、削除しても復活してしまい削除できません。 アップロード後の画面に出るアルバムからは削除し、ゴミ箱からも削除したのですが、 カレンダー表示の画面には画像が残っており、このカレンダー表示の画面で削除しても、 再びカレンダー表示をクリックすると削除した画像が全て復活して表示されています。 どうすればアップロードした画像を削除できるのでしょうか? また、「全部を削除」はどうすればいいのでしょうか? アルバム全体を削除しても、中の画像が消えなかったため、結局1枚1枚削除してます。

  • ファイルのアップロードについて

    画像ファイルをフォームからアップロードしているのですが どうやっていものかわからないことがあります。 まずは、アップするファイルを選択してもらいファイルサイズや 拡張子チェックに問題がなければ他の項目にエラーがあっても move_uploaded_file関数で一時保存フォルダに画像を保存しています。 一時保存フォルダにアップされた画像は後々タイプスタンプで経過 時間を取得し1日以上経過しているものについては削除するので タイムスタンプの値をファイル名にしています。 全ての項目にエラーもなく確定となった場合にはrename関数で 一時保存フォルダから正式な保存フォルダへファイルを移動しています。 ソースをまとめると // 一時ファイル保存フォルダ $tempdir = '../../upload/temp/'; // 一時保存のファイル名 $mktime = mktime(); $tempname = $mktime . '.jpg'; // ファイル正式保存フォルダ $filedir = '../../upload/image/'; // 正式保存のファイル名 $mictime = microtime(); $filename = substr($mictime, 11) . substr($mictime, 2, 6) . '.jpg'; if (isset($_POST['submit'])) { if ($_FILES['file']['size'] == 0) { // サイズが0なのでエラー } if ($_FILES['file']['error'] == UPLOAD_ERR_OK) { // サイズチェック2 if ($_FILES['file']['size'] > 1024*1024) { // 規定サイズ以上なのでエラー } if (画像に関するエラーがなければ) { // move_uploaded_fileで一時保存フォルダへアップロード } } if (全ての項目にエラーがない場合) { // rename関数で一時保存フォルダから正式な保存フォルダへ移動 } というようにしています。 $_FILEは保持できないので一度でもファイルをアップロードしても 他の項目にエラーがある限りリセットされてしまいサイズが0バイトと なるのでエラーチェックに引っかかり何度も選択しなくてはなりません。 一時保存フォルダに保存されたら再度ファイルを選択しアップロード しない限り他の項目にエラーがあってもファイルのエラーチェックを 通し一時保存フォルダの画像をサムネイル画像としてページ上に表示 させたいのですがどうすればいいのでしょうか? 自分なりに調べてみたのですが参考情報や解決策がみつかりませんでした。 詳しい方がおりましたら宜しくお願い致します!

    • 締切済み
    • PHP
  • 画像がアップロードできません

    こんにちは。 最近プログラムを整理するために色々削除していましたところ間違えて画像をアップロードするプログラムを削除してしまいました。 画像は見れますが、例えばmixiなど画像をアップロードしようとしても「画像が壊れています」と表示されます。 どうしたらよいでしょうか?初期設定のインストールできるサイトなどがあれば教えて下さい。宜しくお願いします。

  • 【PHP】 ファイル削除について

    質問です。ファイルをアップロードして、そのファイルを削除したいとき、 ファイル名がわかっていればunlink()で削除できるのですが、 ファイル名がわからないときはどうするのでしょうか? ファイル名を取得するメソッドがあるのでしょうか? もしくは他に方法があるのでしょうか? ではよろしくお願いします。。(-.-;)

    • ベストアンサー
    • PHP

専門家に質問してみよう