• 締切済み

画像アップロードについて

いつもお世話になっております。 画像アップロード機能を作成し、問題なくアップロードを行うことができたのですが、 ある一定サイズ(約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

みんなの回答

  • racci
  • ベストアンサー率64% (9/14)
回答No.3

ini_setでダメなものは、.htaccess か php.ini で設定します。 php.ini はいじれないとのことなので、.htaccess で設定してみたらいかがでしょう。 (例) php_value upload_max_filesize 5M なお、upload_max_filesize や post_max_size だけではなく、memory_limit の値も関係してくるはずです。

ki-torneo
質問者

お礼

返信、遅れました。 回答ありがとうございます。 htaccessの設定してみましたが、うまくいきませんでした。 ロリポップに問い合わせをしてみてアップロードサイズの変更ができるのか聞いてみたんですが、ユーザ側でサイズ変更はできませんとの回答でした。(:_;) というこで、2M以下でアップロードを対応しないということが分かりましたので、簡単な画像リサイズツールを作って提供しようかなと思います。

ki-torneo
質問者

補足

ちなみに以下のサイトで調べました。ご参考までに載せておきます。 【ロリポップhtaccess設定】 http://lolipop.jp/?mode=manual&state=hp&state2=htaccess 【htaccess設定方法】 http://webos-goodies.jp/archives/51081890.html

  • calltella
  • ベストアンサー率49% (317/635)
回答No.2

ini_set("upload_max_filesize","8M"); に加えて ini_set("post_max_size","8M"); ではいかがでしょうか? Apache側(httpd.conf)で2Mに設定されている場合は もうどうしようもありません。 しかし、出来たとしても多くの人が2M以上でアップロードしてきたら 転送量が多いという事でロリポップから警告を受けませんか?

ki-torneo
質問者

お礼

回答ありがとうございます。 やってみたけども実行できませんでした。 ちょっと調べてみたらini_setを使用する場合、設定オプションの変更の可否が「PHP_INI_ALL」または「PHP_INI_USER」でないといけないみたで、 upload_max_filesize、post_max_size共に「PHP_INI_PERDIR」でした・・・ http://jp.php.net/manual/ja/ini.php なのでこの方法では無理みたいですね(T_T) おっしゃる通り転送量の件は考慮する必要はありますが、他に方法はないのでしょうか?

  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.1

<?php ini_set("upload_max_filesize","8M"); ・・・以下省略 ?> とかじゃだめかな? 未検証なので自信なし

ki-torneo
質問者

お礼

早速の回答ありがとうございます。 そんなことできたんだ!と思ってやってみましたが駄目でした・・ アクセス権とかの問題でしょうか??

関連するQ&A

専門家に質問してみよう