perl の CGI や PHP でファイルをアップロードする方法

2007年11月24日 23:59 perl の CGI や PHP でファイルをアップロードする方法

フォームからファイルをアップロードして、そのファイル自体をサーバーに保存したり、あるいはファイルの内容をデータベースに反映したりするようなスクリプトも、作る機会がかなり多いので、手順をメモしておきます。

フォームの html

ファイルをアップロードさせるフォームの場合、通常の form 要素とは違って、enctype 属性をつける必要があります。

<form method="POST" action="upload.cgi" enctype="multipart/form-data">
  <!-- ここにフォームの内容が入る -->
  <input type="file" name="uploadfile" value="" size="20" />
  <input type="submit" value="アップロード" />
</form>

enctype 属性の他に注意する点としては、必ず POST メソッドを指定することが挙げられます。
GET メソッドではファイルのアップロードはできません。

アップされたファイルの受け取り方 (perl の場合)

僕自身は昔、まだ CGI.pm が perl の標準モジュールじゃなかった頃に作ったコードで、アップされたファイルの内容を受け取る処理をすることが多いですが、今は CGI.pm が標準モジュールとして最初から入っているので、これを使うのが手っ取り早いでしょう。

下記サイトが参考になります。

アップされたファイルの受け取り方 (PHP の場合)

PHP の場合は、非常に簡単です。
定義済変数 $_FILES に、アップロードされたファイルの情報が自動的に入ります。

例えば、

<form method="POST" action="upload.cgi" enctype="multipart/form-data">
  <input type="file" name="uploadfile" value="" size="20" />
</form>

のように、アップロードするファイルの入力欄の名前を uploadfile とした場合、変数 $_FILES は以下のように参照できます。

$_FILES['uploadfile']['name']
元のファイル名
$_FILES['uploadfile']['type']
ファイルの MIME-Type
$_FILES['uploadfile']['size']
ファイルのサイズ (バイト単位)
$_FILES['uploadfile']['tmp_name']
アップロードされたファイルのテンポラリ(一時)ファイルの名前(パス)

後は、サーバー上でファイルを保存するなら、 $_FILES['uploadfile']['tmp_name'] をどこかにコピーすれば良いし、ファイルが CSV 等で、その中身を見て何らかの処理をするなら、$_FILES['uploadfile']['tmp_name'] を開いて中身を読めば良いわけです。

阿部辰也へのお仕事のご依頼・お問合せはこちら

Twitter始めました。Followはお気軽にどうぞ。

関連するブログ記事
スポンサード リンク
カテゴリー
PHP | perl/CGI
タグ
CGI | CGI.pm | enctype属性 | form要素 | input要素 | MIME | perl | PHP | xhtml | アップロード
現在位置
TOP > Web制作技術 > perl/CGI > perl の CGI や PHP でファイルをアップロードする方法
前のブログ記事
SEO対策として使われる、perl の CGI や PHP に GET で渡す値を「/」(スラッシュ)で区切る方法 [2007年11月23日 12:50]
次のブログ記事
「お気に入りに追加」「ブックマークに追加」ボタンのまとめ [2007年11月25日 17:12]

トラックバック(0)

このブログ記事に対するトラックバックURL:

コメント(136)

川崎 優樹 [2008年12月 4日 14:30]

失礼ですが、実門がありまして、メール送ります。

CSVファイルをアップロードしてそのファイルを表示させたいのですが、どんな方法がありますか?
教えてください。

Tatsuya [2009年3月 4日 20:46]

> 川崎 優樹さん
CSVファイルをアップロードする部分に関しては、このエントリ通りで大丈夫として、そのファイルを表示する部分ですが、一番単純なのは readfile 関数じゃないでしょうか。
readfile($_FILES['uploadfile']['tmp_name']);
とかで良いかと思います。

buy cigarettes [2013年11月14日 06:11]

bnybul http://skyviewvfc.com/ buy cigarettes

Pharme396 [2014年2月25日 02:37]

Hello! kaeaddb interesting kaeaddb site! I'm really like it! Very, very kaeaddb good!

Pharma50 [2014年2月25日 02:38]

Very nice site! cheap viagra

Pharmf996 [2014年2月25日 02:39]

Very nice site!

viagra [2014年4月 3日 23:57]

Hello!

viagra [2014年4月 3日 23:58]

Hello!

viagra [2014年4月 3日 23:58]

Hello!

viagra [2014年4月 5日 04:44]

Hello!

viagra [2014年4月 5日 04:45]

Hello!

cheap [2014年4月 6日 09:22]

Hello!

order_viagra [2014年4月 6日 09:24]

Hello!

viagra_deals [2014年4月 7日 00:37]

Hello!

viagra [2014年4月 7日 00:38]

Hello!

tadalafil_online [2014年4月 7日 00:39]

Hello!

viagra_canada [2014年4月 8日 01:30]

Hello!

online [2014年4月10日 07:31]

Hello!

canadian [2014年4月10日 08:19]

Hello!

generic [2014年4月11日 09:29]

Hello!

6 [2014年4月11日 09:30]

Hello!

discount [2014年4月11日 09:30]

Hello!

uk [2014年4月11日 09:31]

Hello!

order_viagra [2014年4月12日 09:48]

Hello!

viagra [2014年4月17日 14:18]

Hello!

cheap [2014年4月17日 14:19]

Hello!

online [2014年4月24日 01:26]

Hello!

viagra [2014年4月24日 01:27]

Hello!

cheap_viagra [2014年4月25日 07:08]

Hello!

generic [2014年4月25日 18:36]

Hello!

blog [2014年4月25日 18:36]

Hello!

viagra_professional [2014年6月 1日 10:58]

Hello!

viagra_professional [2014年6月 1日 10:59]

Hello!

photos_viagra [2014年6月 3日 02:27]

Hello!

lowest [2014年6月 3日 02:28]

Hello!

cheap [2014年6月 6日 09:34]

Hello!

cheap [2014年6月 6日 09:35]

Hello!

viagra [2014年6月 6日 21:15]

Hello!

viagra [2014年6月 6日 21:16]

Hello!

viagra [2014年6月 8日 03:25]

Hello!

viagra [2014年6月 8日 03:26]

Hello!

viagra [2014年6月 8日 03:27]

Hello!

cheap_cialis [2014年6月 8日 13:29]

Hello!

viagra_buy [2014年6月 8日 13:30]

Hello!

cialis_buy [2014年6月 8日 13:30]

Hello!

fast [2014年6月 8日 13:32]

Hello!

order [2014年6月 8日 22:10]

Hello!

viagra_kaufen [2014年6月 9日 17:01]

Hello!

viagra_kaufen [2014年6月 9日 17:04]

Hello!

uk [2014年6月11日 14:25]

Hello!

uk [2014年6月11日 14:27]

Hello!

viagra_samples [2014年6月14日 13:52]

Hello!

viagra_samples [2014年6月14日 13:52]

Hello!

viagra_samples [2014年6月14日 13:53]

Hello!

viagra_samples [2014年6月14日 13:53]

Hello!

viagra [2014年6月16日 03:40]

Hello!

online [2014年6月16日 20:02]

Hello!

viagra_cost [2014年6月17日 08:46]

Hello!

viagra [2014年6月17日 08:49]

Hello!

viagra [2014年6月18日 13:54]

Hello!

viagra [2014年6月18日 13:55]

Hello!

generic [2014年6月18日 16:16]

Hello!

cheap_viagra [2014年6月18日 16:16]

Hello!

buy_viagra [2014年6月18日 16:18]

Hello!

order [2014年6月20日 05:03]

Hello!

online [2014年6月20日 05:04]

Hello!

viagra [2014年6月21日 00:40]

Hello!

discount [2014年6月21日 06:16]

Hello!

generic [2014年6月22日 13:42]

Hello!

effects [2014年6月22日 13:42]

Hello!

effects [2014年6月22日 13:43]

Hello!

generic [2014年6月22日 13:44]

Hello!

generic_viagra [2014年6月24日 18:14]

Hello!

viagra [2014年6月27日 00:26]

Hello!

viagra [2014年6月27日 13:17]

Hello!

viagra [2014年6月28日 10:35]

Hello!

viagra_generic [2014年7月 1日 19:29]

Hello!

without [2014年7月 1日 19:29]

Hello!

viagra [2014年7月 3日 19:55]

Hello!

viagra [2014年7月 3日 19:56]

Hello!

viagra [2014年7月 4日 05:55]

Hello!

viagra [2014年7月 4日 05:57]

Hello!

viagra [2014年7月 9日 04:54]

Hello!

viagra [2014年7月10日 18:24]

Hello!

buy_cialis [2014年7月18日 09:56]

Hello!

viagra [2014年7月18日 09:57]

Hello!

cheap_viagra [2014年7月18日 09:58]

Hello!

fast [2014年7月21日 20:52]

Hello!

pills_viagra [2014年7月21日 20:52]

Hello!

generic_viagra [2014年8月 2日 03:20]

Hello!

viagra_online [2014年8月 2日 11:19]

Hello!

cheap_viagra [2014年8月12日 01:26]

Hello!

Moncler Jackets Outlet [2014年10月31日 03:14]

Thanks for every other excellent post. The place else could anybody get that type of info in such an ideal means of writing? I've a presentation subsequent week, and I'm on the look for such info.

buy_viagra [2015年3月24日 13:18]

Hello!

buy_viagra [2015年3月24日 13:19]

Hello!

get_viagra [2015年4月 5日 14:45]

Hello!

get_viagra [2015年4月 5日 14:46]

Hello!

cheap_viagra [2015年4月 7日 17:59]

Hello!

cheap [2015年4月 8日 23:27]

Hello!

payday loans [2015年7月12日 00:37]

czwocaw http://paydayloansnxm.com/ payday loans

order viagra online [2015年8月13日 01:38]

mvolhbe http://orderviagramtc.com/ order viagra online

cheap [2016年5月 5日 21:16]

Hello!

from [2016年5月 5日 21:16]

Hello!

cheap [2016年5月 5日 21:17]

Hello!

cheap [2016年5月 5日 21:17]

Hello!

from [2016年5月 5日 21:18]

Hello!

for [2016年5月 6日 14:48]

Hello!

viagra [2016年5月 6日 14:48]

Hello!

online [2016年8月15日 18:23]

Hello!

purchase_cialis [2016年8月15日 18:24]

Hello!

dysfunction [2016年9月 1日 23:32]

Hello!

safe [2016年9月 2日 01:15]

Hello!

for [2016年9月 2日 01:16]

Hello!

for [2016年9月 2日 01:17]

Hello!

cialis [2016年9月 2日 10:13]

Hello!

viagra [2016年9月 2日 10:14]

Hello!

cialis [2016年9月 2日 10:14]

Hello!

viagra [2016年9月 2日 10:15]

Hello!

viagra [2016年9月 2日 10:15]

Hello!

cialis_sale [2016年9月 2日 17:09]

Hello!

buy_viagra [2016年9月 2日 17:09]

Hello!

purchase_viagra [2016年9月 2日 17:10]

Hello!

viagra [2016年9月 2日 17:11]

Hello!

cheap_cialis [2016年9月 2日 18:49]

Hello!

cialis [2016年9月 2日 18:50]

Hello!

cialis [2016年9月 2日 18:54]

Hello!

cialis [2016年9月 2日 18:55]

Hello!

cialis_india [2016年9月 2日 18:55]

Hello!

cialis [2016年9月 2日 18:56]

Hello!

cheap_cialis [2016年9月 3日 00:08]

Hello!

cialis [2016年9月 3日 00:15]

Hello!

cialis [2016年9月 3日 00:15]

Hello!

cialis [2016年9月 3日 00:16]

Hello!

cialis [2016年9月 3日 00:16]

Hello!

cheap [2016年9月 5日 22:09]

Hello!

cheap [2016年9月 5日 22:10]

Hello!

コメントする


画像の中に見える文字を入力してください。

 

このブログについて

阿部辰也

Webコンサルタントやシステムエンジニア、執筆業などをやっている、グッドホープ代表・阿部辰也のブログです。
Web技術系のTipsから仕事の話、趣味の話まで色々と。
人生は所詮生まれてから死ぬまでの壮大な暇つぶし。
だったら有意義に暇をつぶして生きましょー。

阿部辰也へのお仕事のご依頼・問合せはこちらからどうぞ。

Twitter: @t_abe
読書メーター: ID:Tatsuya

このブログのサイトマップ
このブログのはてなブックマーク数

Feed/RSS購読

タグクラウド

最近のトラックバック

阿部辰也の著書

77のキーワードで知る インターネットで稼ぐ 図解 ブログ・メルマガ・Webサイト構築の基本

77のキーワードで知る インターネットで稼ぐ 図解 ブログ・メルマガ・Webサイト構築の基本

頑張って書いたのに、出版後すぐに出版社が倒産して印税も貰えずじまいで俺涙目(笑)。

Powered by Movable Type 5.02

スポンサード リンク

はてなブックマーク



あわせて読みたい

t-abeの今読んでる本

t-abeの最近読んだ本

t-abeの今やってるゲーム

t-abeの最近やったゲーム