• ベストアンサー

画像のアップロードができない

PHPで携帯サイトを制作中なのですが、メールで画像をアップロードする ことができずに困っております。 具体的にはサーバーにファイル自体はアップロードされるのですが img配下を見ると「ev4rVY(エンコードされたファイル名)」がサーバーにアップされているものの、拡張子がついていないのです。 ▼画像アップロードプログラムPHPソース // ユーザー&認証コードチェック if ($user&&$auth_code==getAuthCode($user['id'], $user['auth_string'])) { // 認証OK // マルチパートの場合のみメールを解析して画像を取得 if (strtolower($structure->ctype_primary) == "multipart") { $images = getImage($structure->parts); } $image_save_path = null; // 画像リストの中から1つだけ画像を取得する foreach ($images as $image) { // コンテンツタイプのチェック if ($image['type'] == 'image/jpeg' || $image['type'] == 'image/gif' || $image['type'] == 'image/png') { // ファイルとして保存 // 一時ファイルパス $temp_path = tempnam('/tmp', 'img_'); if ($temp_path == false) { // error break; } $fp = fopen($temp_path, 'w'); if ($fp == false) { // error break; } fwrite($fp, $image['body']); fclose($fp); // 画像の形式と縦横サイズを取得 list($width, $height, $type) = getimagesize($temp_path); // 認識できる形式であれば、所定のメソッドで開く $imageSource = null; if ($type == IMAGETYPE_GIF) { $imageSource = imagecreatefromgif($temp_path); } else if ($type == IMAGETYPE_JPEG) { $imageSource = imagecreatefromjpeg($temp_path); } else if ($type == IMAGETYPE_PNG) { $imageSource = imagecreatefrompng($temp_path); } // 一時ファイルを消す unlink($temp_path); if ($imageSource) { // ファイル名決定 $path = tempnam($image_dir, ''); //unlink($path); $image_save_path = $path; // 画像をケータイディレクトリへファイル保存 imagejpeg($imageSource, $image_save_path); imagedestroy($imageSource); break; } } } ▲以上ここまで━━━━━━━━━━━━━━━━━━━━━━━━━ 開発環境:CentOS5 PHP Version 5.2.11 ※本を参考に制作しているのですが  本にはGD Graphics をダウンロードした方がよいと  記載がありました。関係ありますでしょうか。 どなたかお分かりになる方がいらっしゃいましたらどうか ご教授いただけませんでしょうか。 お願いいたします。

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

  • ベストアンサー
  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.2

こんにちは。 $ext = ".jpg"; $imageSource = null; if ($type == IMAGETYPE_GIF) { $imageSource = imagecreatefromgif($temp_path); $ext = ".gif"; } else if ($type == IMAGETYPE_JPEG) { $imageSource = imagecreatefromjpeg($temp_path); } else if ($type == IMAGETYPE_PNG) { $imageSource = imagecreatefrompng($temp_path); $ext = ".png"; } //省略 $path = tempnam($image_dir, ''); $image_save_path = $path . $ext; こんな感じでどうでしょうか。

ham64600
質問者

お礼

ありがとうございました。 いただいたソースに修正させていただいたところ 無事.gif .jpgなどの拡張子がついた名前でアップロードできました。 本当にありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • UmJammer
  • ベストアンサー率58% (115/196)
回答No.1

tempnam()で画像の保存パスを決めているからですね。 これは一意のファイル名(とファイル)を作成する関数で、保存しようとしているファイルの形式が何かということとは何の関係もありません。 http://jp.php.net/manual/ja/function.tempnam.php 任意の名前で保存したければそのようにコーディングする必要があります。

ham64600
質問者

お礼

UmJammer様 早速ご回答いただきましてありがとうございます! いつも的確に教えていただきまして本当に感謝しております。 tempnam()の設定が間違っているのでしょうか。 ファイル名は一意のものでいいのですが 拡張子は 投稿ファイルがgifであればgif pngであればpng jpegであればjpeg をファイル名の後につけたいのですが その場合、どこを変更すればよろしいのでしょうか。 下記のような設定をおこえばよろしいでのでしょうか http://mashimonator.weblike.jp/blog/2008/12/phppost.html

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 携帯サイトの画像アップロード[PHP+MySQL]

    携帯サイトの会員マイページで 個人の画像をアップできる仕様を制作したいのですが (ブログやsnsサイトによくある、アバターの代わりに  画像をアップできる仕様です) どうしてもDBの更新・画像のアップロード、双方ができず 困り果てております。 ※メールエラーログをみてみたところ、  メールをトリガーとしてプログラム自体は動作していた  ものの、処理が途中でストップされておりました。 具体的には、下記のような仕様を考えています。 (1)アップしたい画像を添付して携帯メールを送信 (2)メールをトリガーとして画像アップロード&DB更新  プログラム起動 ~以下プログラムの中身の動作~ (3)届いたメールアドレス(拡張メールアドレス)から会員ID情報を  取得 (4)会員情報テーブル(sns_user)にマッチする会員IDの列の  image_pathの項目にアップロードした画像のパスが  更新される。  PHP+MySQLで制作中です。  「update テーブル名 set where 条件~」で調べてみたものの、  どうしても分からず質問させていただきました。  どなたかお分かりになられる方がいらっしゃいましたら  ご教授いただけませんでしょうか。 以下ソース内容 // ユーザー&認証コードチェック if ($user&&$auth_code==getAuthCode($user['id'], $user['auth_string'])) { // 認証OK // マルチパートの場合のみメールを解析して画像を取得 if (strtolower($structure->ctype_primary) == "multipart") { $images = getImage($structure->parts); } $image_save_path = null; // 画像リストの中から1つだけ画像を取得する foreach ($images as $image) { // コンテンツタイプのチェック if ($image['type'] == 'image/jpeg' || $image['type'] == 'image/gif' || $image['type'] == 'image/png') { // ファイルとして保存 // 一時ファイルパス $temp_path = tempnam('/tmp', 'img_'); if ($temp_path == false) { // error break; } $fp = fopen($temp_path, 'w'); if ($fp == false) { // error break; } fwrite($fp, $image['body']); fclose($fp); // 画像の形式と縦横サイズを取得 list($width, $height, $type) = getimagesize($temp_path); // 認識できる形式であれば、所定のメソッドで開く $ext = ".jpg"; $imageSource = null; if ($type == IMAGETYPE_GIF) { $imageSource = imagecreatefromgif($temp_path); $ext = ".gif"; } else if ($type == IMAGETYPE_JPEG) { $imageSource = imagecreatefromjpeg($temp_path); } else if ($type == IMAGETYPE_PNG) { $imageSource = imagecreatefrompng($temp_path); $ext = ".png"; } // 一時ファイルを消す unlink($temp_path); if ($imageSource) { // ファイル名決定 $path = tempnam($image_dir, ''); $image_save_path = $path . $ext; // 画像をケータイディレクトリへファイル保存 imagejpeg($imageSource, $image_save_path); imagedestroy($imageSource); break; } } } if ($image_save_path) { // 差出人取得 $from = getFrom($structure->headers['from']); $params = array(); $params[] = $user['id']; $params[] = $image_save_path; // データベースへ接続する // if ($db = connectDB($db_user, $db_pass, $db_name, $db_host, true)) { $sql = "update sns_users set image_path = '$image_save_path' where id = '" . mysql_real_escape_string( $_SESSION['id'] ) . "'"; execQuery($db, $query, $params); } } $query = "select * from sns_users where id = ''"; $result = mysql_query( $query ); $user = mysql_fetch_array( $result ); // データベースを閉じる closeDB($db); } ?>

    • 締切済み
    • PHP
  • 携帯メールから添付画像ファイルを取得する方法について

    現在、PHPを使って携帯サイトを作成しています。そこでPEARライブラリのMail_mimeDecodeを使って、添付ファイルの画像を抽出したいと思っています。 「PHP携帯サイト実践アプリケーション集」という書籍を参考にしています。 最初にMail_mimeDecodeを使ってメールを分解して画像を含むものについては 構造体として $image['type'](画像の形式) $image['name'](画像のファイル名) $image['body'](画像の本体) を取得します。 次に一時ファイルを作成して、そこに画像の本体(body部分)を書き込んでいます。 $temp_path=tempnam('/tmp,'img_'); $fp=fopen($temp_path,'w'); fwrite($fp,$image['body']); ←画像のbody fclose($fp); その後、画像の形式を確認して、画像ファイルに変換して変数$imagesourceに代入しています。 list($width,$height,$type)=getimagesize($temp_path); if($type==IMAGETYPE_GIF){ $imagesource=imagecreatefromgif($temp_path); }else if($type==IMAGETYPE_JPEG){ $imagesource=imagecreatefromjpeg($temp_path); }else if($type==IMAGETYPE_PNG){ $imagesource=imagecreatefrompng($temp_path); } その後 //一時ファイルを削除 unlink($temp_path); //--------<わからない部分>-------------- $path=tempnam('/home/xxxx/www/mobile/img',''); $image_save_path=$path; imagejpeg($imagesource,$image_save_path); このようなかんじで画像ファイルを取得しているようなのですが、上の3行がわかりません。最初に一時ファイル(接頭辞にimg_)を作って画像のbodyを書き込むというのは、画像ファイルを作成するための準備作業用として使っているのかなという認識でいます。 しかし上の3行でもう一度一時ファイルを作成して(接頭辞が' ')、それをimagejpegで一時ファイルに出力しています。なぜ一時ファイルを使うのでしょうか? $path='/home/xxx/www/mobile/img'; imagejpeg($imagesource,$path); 上2行ではいけないのかなと思い、ためしましたがだめでした。 一時ファイルの作成(tempnam)はどのようなときに使うのでしょうか。なにぶん初心者のため、わかりやすい説明で教えていただければ幸いです。

    • ベストアンサー
    • PHP
  • 携帯サイトの画像アップロード

    Linaxサーバー初心者です。 今携帯サイトの画像アップロードプログラムを作成して いるのですが、どうしても原因が分からず、困っております。どなたか分かる方がいらっしゃいましたら御教授お願いできませんでしょうか。 ▼プログラムのフロー snspost宛てのメールを受信するとメールプログラム(snspost.php)が起動し、メール解析プログラム(postdialy.php)にメールデータを渡し、解析処理を行います。 ▼/etc/aliases の内容 snspost:"|/usr/bin/php /var/www/html/snspost.php" ▼postdialy.php の内容 <?php $path = '/usr/lib/php/pear/'; set_include_path(get_include_path() . PATH_SEPARATOR . $path); require_once "Mail/mimeDecode.php"; require_once "DBUtil.php"; require_once "MailParser.php"; require_once "AuthUtil.php"; // コンフィグ読み込み($configに設定内容が入る) require_once "Config.php"; // 画像格納場所 $image_dir = $config['image_dir']; // 初期化 $images = array(); // 処理実行 $data = $_POST['content']; // メールをデコードする $decoder = new Mail_mimeDecode($data); $structure = $decoder->decode(array( 'include_bodies' => true, 'decode_bodies' => true, 'decode_headers' => true, )); // メールの宛先でユーザーを識別する $to = $structure->headers['to']; // 宛先は[prefix][user_id]_[auth_code]@ホスト名 $pattern = '!^'.$config['prefix'].'([0-9].*?)_([0-9a-z]{6})@.*?!'; $user = null; if (preg_match($pattern, $to, $matches)) { $user_id = $matches[1]; $auth_code = $matches[2]; if ($db = connectDB($db_user, $db_pass, $db_name, $db_host, true)) { // 投稿内容を記録する $query = "SELECT * from sns_users where id=?"; $user = execQuery($db, $query, array($user_id)); if ($user) { $user = $user[0]; } // データベースを閉じる closeDB($db);}} ――――途中省略―――――――――――――― if ($image_save_path) { // 題名取得 $subject = $structure->headers['subject']; $subject = mb_convert_encoding($subject, "utf-8", array('ISO-2022-JP', 'sjis-win', 'utf-8', 'eucjp-win')); // 差出人取得 $from = getFrom($structure->headers['from']); // 本文取得 $body = getBody($structure); $body = mb_convert_encoding($body, "utf-8", array('ISO-2022-JP', 'sjis-win', 'utf-8', 'eucjp-win')); $params = array(); $params[] = $user['id']; $params[] = $subject; $params[] = $body; $params[] = $image_save_path; // データベースへ接続する if ($db = connectDB($db_user, $db_pass, $db_name, $db_host, true)) { // 投稿内容を記録する $query = "INSERT INTO sns_diaries(user_id,subject,contents,image_path,posted_at)". " VALUES (?,?,?,?,NOW())"; execQuery($db, $query, $params); // データベースを閉じる closeDB($db); }}} ?>以上ここまで ちなみに、送り先のsnspost@(ドメイン名)を見ると受信はできています。他に必要な情報などございましたら是非ご連絡いただけますと幸いです。どなたかお助けください。どうかお願いいたします。

    • ベストアンサー
    • PHP
  • 画像アップロードについて

    いつもお世話になっております。 画像アップロード機能を作成し、問題なくアップロードを行うことができたのですが、 ある一定サイズ(約2MB)を超えるとアップロードが行われない現象が発生しました。 アップロードした画像は既定のサイズにリサイズして保存する仕様となっているのですが アップロード自体が行われないため、困っています。 以下【該当処理抜粋】------------------------------------------------------------- // ファイル名を設定する $fname = "hoge.jpg"; // 画像の幅・高さを設定する【規定値】 $w_size = "150"; $h_size = "100"; $tmp_name = $_FILES[$fname]['tmp_name']; // 画像ファイル名 $filename = "./hoge/".$fname; if (is_uploaded_file($tmp_name)){ $type = $_FILES[$fname]['type']; if ($type == "image/jpeg" || $type == "image/pjpeg") { // 画像ファイル存在チェック if(file_exists($filename)){ // ファイルが存在する場合は削除する unlink($filename); } // 画像ファイル名でアップロードをおこなう move_uploaded_file($tmp_name, $filename); // 画像ファイルのサイズを取得する list($sw, $sh) = getimagesize($filename); $src = imagecreatefromjpeg($filename); $dst = imagecreatetruecolor($w_size, $h_size); // 画像ファイルを既定サイズにリサイズする imagecopyresized($dst, $src, 0, 0, 0, 0, $w_size, $h_size, $sw, $sh); imagejpeg($dst, $filename); echo $fname[1]."ファイルのアップロードが完了しました。<br>"; }else{ echo $fname ."ファイルの画像形式が正しくありません。<br>"; } }else{ echo $fname ."ファイルはアップロードされませんでした。<br>"; } ---------------------------------------------------------------------------------------------------- 現象について調べたところ、PHPにはアップロードサイズが設定されている(デフォルト2MB)ため サイズの大きいファイルはアップロードできないようです。 サーバーはロリポップでレンタルしているためphp.iniの設定を変更ができません。 画像自体を事前にリサイズしてアップロードを行えば問題ないのですが、 今後、一般の方にも公開を予定してまして、リサイズ方法が分からない人(そのようなソフトがない人)にも 操作できるようにデジカメで撮った写真をそのままアップロードできる形式にしたいと考えています。 何かいい方法があればご教授願います。 【環境】 PG:php4.3.11 WEB:Apache

    • 締切済み
    • PHP
  • 画像リサイズアップロード

    画像アップロードするプログラムを作成したのですが、元画像を指定したサイズ(アスペクト比を維持)させて画像をアップロードする方法を何度かトライしたのですが、経験浅く断念しています。GDで処理させる方法がベストと思っていますが、下記のサンプルコードを手直しお願いしていただけるか、下記と同様な手順での処理方法に類似したサイトがあれば教えてください。 処理の条件 ・元画像を指定サイズでアスペクト比を維持した状態でリサイズ ・元画像は削除? ・透過Gifも使えるといいです。 ・その他アドバイス if(is_uploaded_file($img)){ $imagesize = getimagesize($img); switch($imagesize[2]){ case 1: $img_name = $code . ".gif"; break; case 2: $img_name = $code . ".jpg"; break; case 3: $img_name = $code . ".png"; break; default: unlink($img); } if($img_name){ $sendpath = $path.$img_name; if(move_uploaded_file($img, $sendpath)){ $img_name = $img_name; } } }

    • ベストアンサー
    • PHP
  • PHPで画像のサムネイル作成

    PHPの画像処理関数を使って、大きなサイズの画像を小さなサムネイルに変換するクラスを作りました。 このクラスを使ってサムネイルを表示させるクライアントプログラムを作り、実行させたのですが、うまくいきません。 下にクラスの定義と、プログラムを掲載してありますが、プログラム中のインスタンス作成文である $thumb=new ThumbNailImage($path, 100); の第2パラメータであるサイズをいくら変えても、表示される画像は元のままです。 また、この文をコメントアウトして、 //echo "thumbnail size: width= $width, height= $height</br>"; のコメントを外し実行すると、画像サイズは表示されず、 thumbnail size: width=, height= とだけ表示されます。 これらのことから、クラスの定義がおかしいのだろうと思って、各関数をくまなく調べたのですが、どこがおかしいのかわかりません。 どなたかお知恵を貸していただけないでしょうか。 どうぞよろしくお願いいたします。 クライアントプログラム: <?php require 'ThumbNailImage.php'; $path="samples"; $file="p2230331.jpg"; $path=realpath("$path/$file"); $thumb=new ThumbNailImage($path, 100); $thumb->getImage();// including header in this function $width= $thumb->getThumbWidth(); $height= $thumb->getThumbHeight(); //echo "thumbnail size: width= $width, height= $height</br>"; ?> クラス定義: 長すぎて質問欄に入りきらないかもしれないので、不要と思われる関数は除いてあります。 <?php class ThumbNailImage{ private $image; private $quality=100; private $mimetype; private $imageproperties = array(); private $initialfilesize; private $thumbwidth; private $thumbheight; public function __construct($file, $thumbnailsize) { is_file($file) or die("file $file does not exist"); $this->initialfilesize = filesize($file);// file size in bytes $this->imageproperties = getimagesize($file); // $imageproperties[0]= width // $imageproperties[1]= height // $imageproperties[2]= mime type constant $this->mimetype = image_type_to_mime_type($this->imageproperties[2]); // create image switch($this->imageproperties[2]){ case IMAGETYPE_JPEG: $this->image=imagecreatefromJPEG($file); break; case IMAGETYPE_GIF: $this->image=imagecreatefroGIF($file); break; case IMAGETYPE_PNG: $this->image=imagecreatefromPNG($file); break; default: die("could not create image"); } // end case $this->createThumb($thumbnailsize); } public function createThumb($thumbnailsize) { $srcW=$imageproperties[0]; $srcH=$imageproperties[1]; $prop=array(); if($srcW > $thumbnailsize || $srcH > $thumbnailsize){ $reduction = $this->calculateReduction($thumbnailsize); $destW=round($srcW/$reduction); $destH=round($srcH/$reduction); $copy = imagecreatetruecolor($destW, $destH); imagecopyresized($copy, $this->image, 0,0,0,0,$destW, $destH, $srcW, $srcH); imagedestroy($this->image); $this->image = $copy;// now $this->image has the thumbnail image $prop=getimagesize($this->image); $this->thumbwidth=$prop[0]; $this->thumbheight=$prop[1]; } }// end function public function calculateReduction($thumbnailsize) { $srcW=$imageproperties[0]; $srcH=$imageproperties[1]; if($srcH > $srcW){ $reduction = round($srcH/$thumbnailsize); }else{ $reduction = round($srcW/$thumbnailsize); } return $reduction; } public function getImage() { header("content-type: $this->mimetype"); switch($this->imageproperties[2]){ case IMAGETYPE_JPEG: imagejpeg($this->image,NULL,$this->quality); break; case IMAGETYPE_GIF: imagegif($this->image,NULL ); break; case IMAGETYPE_PNG: imagepng($this->image,NULL, $this->quality); break; default: die("could not create image"); } // end case ; } if($this->imageproperties[2]==IMAGETYPE_JPEG || $this->imageproperties[2]==IMAGETYPE_PNG){ if($quality >100 || $quality < 1){ $this->quality = 75; // default in case of wrong parameter }else{ $this->quality=$quality; } } } public function getThumbWidth() { return $this->thumbwidth; } public function getThumbHeight() { return $this->thumbheight; } }// end class ?>

    • ベストアンサー
    • PHP
  • アップロードした画像の削除

    フォームから画像をアップロードするものを作っています。 アップロードから画像の表示まではできているのですが 画像の削除の方法について教えてください。 単純に削除であれば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 関数で移動すれば値も消えていて当然というのはわかるので実現 できる事なのかすらわからない状況です。 わかりづらい質問となってしまい申し訳ございませんが宜しく お願い致します。

    • 締切済み
    • PHP
  • PHPで画像をアップロード&保存したいのですが..

    初心者です. ブラウザから画像をアップロードし保存できるようにしたく, サンプルを基に以下のようなソースを書いてみたのですが, 画像の保存ができません. もし直さなければいけないところがわかる人がいらっしゃいましたら ぜひ教えてください. よろしくお願いいたします. <?php $img_name = $_FILES["img_path"]["name"]; $img_size = $_FILES["img_path"]["size"]; $img_type = $_FILES["img_path"]["type"]; $img_tmp = $_FILES["img_path"]["tmp_name"]; if($_REQUEST["up"] != ""){ if($img_tmp != "" and $img_size <= 30000){ $img_message = "名前は: $img_name <br>サイズは: $img_size <br>MIMEタイプは: $img_type <br>一時的に保存されているパスは: $img_tmp <br>"; }else{ $size_error = "サイズが大きすぎます。ファイルサイズは30キロバイト以下です。"; } } $FilePath = "./img/".src.".".GetExt($img_name); move_uploaded_file($img_temp,$FilePath); //GetExt function GetExt($FilePath){ $f = strrev($FilePath); $ext = substr($f, 0, strpos($f,".")); return strrev($ext); } ?>

    • 締切済み
    • PHP
  • 画像のアップロード

    はじめまして。本を参考にphp4.3.11&MYSQLによる画像のアップロードについて勉強中の初心者です。 開発はレンタルサーバーで行っています。 画像のアップロードに関して下記プログラムを設定しているのですが、 エラーが表示されて画像のアップロードができません。 ■設定したitem2.php 内のソースです。 require( '../config.php' ); // 写真アップロード $path_parts = pathinfo( $_FILES['userfile']['name'] ); $uploadfile = $item_image_dir . $item_id . '.' . strtolower( $path_parts['extension'] ); if ( move_uploaded_file( $_FILES['userfile']['tmp_name'], $uploadfile ) ) { chmod( $uploadfile, 0777 ); $sql = "update item set image_url ='" . $item_image_url . $item_id . '.' . strtolower( $path_parts['extension'] ) . "' where item_id = '$item_id'"; $result = mysql_query( $sql ); } ■外部参照している../config.php 内の記述です。 $item_image_dir = '/var/www/****/htdocs/image/item/'; $item_image_url = '/image/item/'; ▼エラー内容です。 Warning: move_uploaded_file(home/****/public_html/image/item/0.gif) [function.move-uploaded-file]: failed to open stream: No such file or directory in /home/****/public_html/admin/item2.php on line 68 Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpov0Fqr' to 'home/****/public_html/image/item/0.gif' in /home/****/public_html/admin/item2.php on line 68 image/itemのパラメータは777に設定しております。 どなたか原因お分かりになられる方がいらっしゃったらどうかお教え ください。ご不明な点などございましたら是非ご指摘ください。 どうぞよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 画像をアップロードしてもキャッシュを見に行ってしまう

    こんにちは。 画像をアップロードするプログラムを作っているのですが、アップロード したファイルの確認をした際、キャッシュを読み込んでしまい、古い画像 が表示されてしまいます。 ログを見るとかなり近い内容の質問がありましたが、プログラムの動きが 違うので改めて質問させて頂きます。 プログラムの構成は、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