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 をダウンロードした方がよいと
記載がありました。関係ありますでしょうか。
どなたかお分かりになる方がいらっしゃいましたらどうか
ご教授いただけませんでしょうか。
お願いいたします。
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;
こんな感じでどうでしょうか。
ありがとうございました。
いただいたソースに修正させていただいたところ
無事.gif .jpgなどの拡張子がついた名前でアップロードできました。
本当にありがとうございました。
No.1
- 回答日時:
tempnam()で画像の保存パスを決めているからですね。
これは一意のファイル名(とファイル)を作成する関数で、保存しようとしているファイルの形式が何かということとは何の関係もありません。
http://jp.php.net/manual/ja/function.tempnam.php
任意の名前で保存したければそのようにコーディングする必要があります。
UmJammer様
早速ご回答いただきましてありがとうございます!
いつも的確に教えていただきまして本当に感謝しております。
tempnam()の設定が間違っているのでしょうか。
ファイル名は一意のものでいいのですが
拡張子は
投稿ファイルがgifであればgif
pngであればpng
jpegであればjpeg
をファイル名の後につけたいのですが
その場合、どこを変更すればよろしいのでしょうか。
下記のような設定をおこえばよろしいでのでしょうか
http://mashimonator.weblike.jp/blog/2008/12/phpp …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP imageフォルダに、画像をリサイズして保存する時のファイル名を変更したい 1 2023/05/30 11:39
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- PHP $filePath = './user_img/' . $file['name'];? 1 2022/12/10 07:29
- Visual Basic(VBA) Excel vbaについての質問 3 2023/04/18 16:14
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- JavaScript アップロードファイルの種類によって処理を分岐させたいのですが書き方が分からずアドバイスお願いします 4 2023/06/17 19:12
- PHP 'member_picture/'に/がありますが 、「スラッシュ」は必要でしょうか? 1 2022/11/27 04:32
- PHP 掲示板を資料を参考にして開発中ですが、画像がアップされません? 1 2022/11/21 06:44
- PHP PHP MySQLに画像を直接保存 2 2022/06/05 11:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
透過PNGが透過されない!!
-
C# Excelファイルへの画像挿入。
-
手作業で埋め込んだ、UserForm1...
-
ビットマップ画像を読み込むプ...
-
クリックされた画像URLの照合
-
Illustratorで文字と画像を流し...
-
PHPでPDFを画像で表示したい
-
PHPで吐き出した画像にリンクを...
-
拡張子php画像をjpg画像等に変...
-
VBSの「MsgBox」について
-
画像ファイル pngのメリットを...
-
PHP MySQLに画像を直接保存
-
Pythonで画像の読み込みが上手...
-
Webbrowser上に表示した画像を...
-
ListViewコントロールでサムネ...
-
libpng 24bpp rawをPNGに変換す...
-
php,mysqlにて画像パス保存/表...
-
VBAでJPGサイズ変更
-
pictureboxに表示した画像のフ...
-
画像リストを作りたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBSの「MsgBox」について
-
拡張子php画像をjpg画像等に変...
-
透過PNGが透過されない!!
-
Illustratorで文字と画像を流し...
-
アップロード画像数でCSSを分け...
-
imageフォルダに、画像をリサイ...
-
PythonのTkinter詳しい方へ。画...
-
VBAでJPGサイズ変更
-
C# Excelファイルへの画像挿入。
-
ListViewコントロールでサムネ...
-
PHPで吐き出した画像にリンクを...
-
php,mysqlにて画像パス保存/表...
-
PHP+PostgreSQLを使ってPDFファ...
-
スマートフォンから画像のアッ...
-
画像にテキストを埋め込むジェ...
-
実行ファイル(exe)に画像ファ...
-
ビットマップ画像を読み込むプ...
-
改行コードのカウント
-
Ajaxで画像表示
-
画像アップロードのファイル名...
おすすめ情報