- ベストアンサー
php初心者のための画像アップロードの実装方法
- php初心者でも簡単に画像をアップロードできる方法を紹介します。拡張子を調べて特定の形式のみを許可することもできます。また、画像のサイズや縦横比を制限する方法もあります。
- 画像アップロードには、<input>タグを使用してファイルを選択し、<form>タグでデータを送信する必要があります。phpの<$_FILES>を使用して、ファイルの情報を取得します。条件に合致する場合、ファイルを指定したディレクトリに保存することもできます。
- 画像アップロード時に注意すべき点として、ファイルのサイズ制限や不正な形式のファイルを拒否することがあります。さらに、アップロードされた画像をリネームすることもできます。画像の処理や保存には十分な慎重さが必要です。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
追記しました。
その他の回答 (2)
ファイル名をチェックしたり、$_FILES['upfile']['type']を見るだけでは、受け取るファイルの種類を制限するには判定が甘すぎます。 getimagesize関数やfinfoクラスを利用する必要があります。 サンプル http://qiita.com/mpyw/items/73ee77a9535cc65eff1e
お礼
お答え頂きありがとうございます phpのバージョンが5.2.5だったので表示できませんでしたorz
- yambejp
- ベストアンサー率51% (3827/7415)
>1.拡張子を調べて限定したい。gif、jpg、pngの三つを許可したい $_FILES["upfile"]["name"]の文字列から後ろ4文字抜き出してチェックすればよいでしょう >2.画像の横と縦の幅が指定した幅より大きければ、指定した幅まで縦横比維持で縮小 100*100 できればPEAR::Image_Transformあたりを使うとかなり楽にできます scaleByLength(n)を利用すると、アップしたファイルの縦横長いほうの長さを nにリサイズできます。 http://pear.php.net/manual/ja/package.images.image-transform.php >3.もう一つのディレクトリに、小さいサムネイルを作りたい。大きさは32*32です 同上 >4.拡張子はそのままにして画像の名前をリネームしたいです 単純に画像名を変更するだけですね 逆に「リネームしたい」といわれてもどう名前を変えたいのか提示されていないので どうしようもないですね。 日時(マイクロ秒)を利用したり、テンポラリの名前をそのまま利用したり好きに すればいいでしょう。 なおリネームというよりは、テンポラリファイルを所定のフォルダに名称をつけて コピー(移動?)をするというのが正しいかもしれません。 http://www.php.net/manual/ja/function.move-uploaded-file.php
お礼
回答ありがとうございます みなさんのおかげでアップできるようになりました
お礼
丁寧な回答ありがとうございます 画像アップできるようになりました