このエントリーをはてなブックマークに追加


PHPスクリプトとHTMLによるファイルのアップロード

PHPによるファイルアップロードの環境構築とサンプルコードを以下に紹介します。
尚、Apache+PHP環境はすでに構築済みであることが前提です。
見構築の場合は以下の関連記事にあるLAMPやLAPP構築記事などを参考にしてください。


スポンサーリンク

関連記事

以下の資料はLINUX.JUST4FUN.BIZで公開している資料です。

動作確認環境

$ lsb_release -d
Description:    Ubuntu 12.04.4 LTS
$ apache2 -v
Server version: Apache/2.2.22 (Ubuntu)
Server built:   Jul 12 2013 13:38:21
$ php --version
PHP 5.3.10-1ubuntu3.10 with Suhosin-Patch (cli) (built: Feb 28 2014 23:19:50)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies

アップロード先ディレクトリの環境設定

Apacheのドキュメントルート(Ubuntuの場合/var/www)にfileディレクトリをパーミッション777で作成しました。
このディレクトリにアップロードしたファイルを保存することにします。

sakura@ubuntu:~$ cd /var/www/
sakura@ubuntu:/var/www$ sudo mkdir file
sakura@ubuntu:/var/www$ sudo chmod 777 file

php.iniファイルの確認

php.iniファイルには以下に記す部分の記載があります。

;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;

; Whether to allow HTTP file uploads.
; http://php.net/file-uploads
file_uploads = On

; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
; http://php.net/upload-tmp-dir
;upload_tmp_dir =

; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize = 2M

; Maximum number of files that can be uploaded via a single request
max_file_uploads = 20

file_uploads, upload_max_filesize, max_file_uploads などの設定値があります。
キーワードを見ればわかると思いますが念のために記載します。

file_uploadsOnになっていないとファイルアップロードができません
upload_max_filesizeアップロードできるファイルサイズの最大値を記します

この設定値が間違っているとファイルアップロードに失敗する可能性があるので注意してください。
尚、Ubuntuでは、/etc/php5/apache2/php.iniになります。
各インストール環境によってphp.iniの場所が違いますので注意してください。

アップロード用HTMLの準備

以下のHTMLをApacheのドキュメントルートに配置します。(Ubuntuの場合は/var/www)
パーミッションによりコピーやファイル作成ができない場合は、sudoコマンドやrootユーザーにスイッチしてファイルを配置してください。
fileupload.html (改行コードLF)

<html>
<body>
<form enctype="multipart/form-data" action="upload.php" method="POST">
    UPLOAD FILE : <input name="userfile" type="file" />
    <input type="submit" value="UPLOAD!" />
</form>
</body>
</html>

アップロード処理用のPHPを準備

fileupload.php (改行コードLF) 以下のphpスクリプトをApacheのドキュメントルートに配置します。(Ubuntuの場合は/var/www)
パーミッションによりコピーやファイル作成ができない場合は、sudoコマンドやrootユーザーにスイッチしてファイルを配置してください。

<?php
$uploaddir = '/var/www/file/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
    echo "<b>Upload success.</b>";
} else {
    echo "<b>Upload failed.</b>";
}
// DEBUG
// print_r($_FILES);
?>

ブラウザによりHTMLにアクセス

  1. 以下のURLを指定しブラウザでアクセスしてください。
    http://配置したサーバー/upload.html
    01.gif
     
  2. アップロードするファイルを選択してください。
  3. UPLOAD!ボタンを押します。
    注意:php.iniのupload_max_filesizeに指定したサイズを越したファイルはアップロードできませんので注意してください。
    02.gif
     
    Upload success.が表示されるはずです。
  4. /var/www/fileを確認してみるとアップロードされているのが確認できます。
    $ ls -l /var/www/file/
    合計 4
    -rw-r--r-- 1 www-data www-data 14  3月 10 11:43 sample.txt

以上、PHPによるファイルのアップロード方法でした。


スポンサーリンク

添付ファイル: file01.gif 929件 [詳細] file02.gif 768件 [詳細] fileupload.html 1045件 [詳細] fileupload.php 754件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-03-20 (金) 22:36:01