ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

質問者:makochan07 携帯メールから添付画像ファイルを取得する方法について
困り度:
  • すぐに回答を!
現在、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)はどのようなときに使うのでしょうか。なにぶん初心者のため、わかりやすい説明で教えていただければ幸いです。
質問投稿日時:09/11/09 08:56
質問番号:5433236
この質問に対する回答は締め切られました。

回答

良回答20pt

回答者:UmJammer tempnam()は「一時ファイル」ではなく「一意なファイル名(とファイル)」を作る関数です。従って主たる目的は一意なファイル名の生成にあります。
http://jp2.php.net/manual/ja/function.tempnam.php
種類:回答
どんな人:経験者
自信:参考意見
回答日時:09/11/09 23:51
回答番号:No.1
この回答へのお礼勘違いしていました。ありがとうございます。