PHPでプログラムを書いているとやりたいことが増えてきませんか?
- POSTやSESSIONでデータのページ遷移をやってみる。
- DBにアクセスしてデータの保存や追加、変更をする。
こんなことを自分でやってみるとレンタルサーバーなどを借りて、サイトをネットの海に上げて、どこからでも自分の作ったプログラムにアクセスしたくなるんですよね。
その中で、レンタルサーバーにファイルをアップロードする作業が出てくるわけですが、普通はFTPソフトを使うはず。実際、私もFFFTPというフリーソフトを使っています。
でも、こうも思うわけです。
自分でファイルアップローダー作ってみたい!!って。
使い道があるかというと一人で作業している分には、はっきり言って不要です(笑)。でも複数人で作業する場合などは、まだ使う価値があったりします。
今回は簡単なサンプルコードを作っていきたいと思います。
フォームでファイルを送るには?
フォームでテキストや数値を送ったことはよくあると思いますが、ファイルを送ったことってありますか?
実は難しくもなんともなく、一度覚えてしまえばおまじないとかしてしまうくらい簡単なんですよ。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<!doctype html> <html lang="ja"> <head> <meta charset="utf-8"> <title>test</title> </head> <body> <form method="post" action="upload.php" enctype="multipart/form-data"> <input type="file" name="up_file"> <input type="submit" value="アップロード"> </form> </body> </html> |
ファイルをアップロードするときのinput要素は<input type=”file”>を使います。そして、form要素にはenctype=”multipart/form-data”を入れればいいだけなんです。
送ったらエラーチェック
あとはフォームで送った先でエラーチェックをすればOKですね。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php //一時ファイルがアップロードされているかのチェック if(is_uploaded_file($_FILES['upload_file']['tmp_name'])){ //一時ファイルをコピーできたか if(move_uploaded_file($_FILES['upload_file']['tmp_name'],"./".$_FILES['upload_file']['name'])){ //TUREのとき echo "アップロードできました。"; }else{ //コピーに失敗したとき echo "アップロードの失敗しました"; } }else{ //ファイルがアップロードされていないとき echo "ファイルがありません"; } ?> |
いくつか覚えておく変数はありますが、これでtest.htmlがあるフォルダ内に、アップロードしたファイルが保存されますよ。
自分しかレンタルサーバーにアクセスできず、かつ、自分以外の誰かのプログラムを上げてもらいたい時などに使おうかと思います。(そんな時あるかな…)
以上です。