画像のアップロードができない
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 をダウンロードした方がよいと
記載がありました。関係ありますでしょうか。
どなたかお分かりになる方がいらっしゃいましたらどうか
ご教授いただけませんでしょうか。
お願いいたします。
補足
名前を変える・・・というのは自分ではやっていないので、WEB製作ソフトが勝手にやってるのでしょうか? 私自身はページに、ハード内に保存した画像をそのまま挿入しているだけなんです・・・。 普通はそれで何の問題もないらしいのですが・・・友人は私とは違うWEBソフトを使用しているのですが、UPした時に保存したそのままの名前(アドレス)でUPされ、何の問題もないらしいので。 ちなみに私が使用しているのはNinjaです。