phpファイルアップロードサーバー保存

この前「Jqueryを使ってHTML5ドラッグ&ドロップファイルアップロード」を紹介しました。
http://www.it-view.net/drag-and-drop-file-upload-jquery-178.html

質問に対してクライアントからアップロードされたファイルをサーバーに保存する方法を紹介します。
今回はphpでサーバーにファイル保存方法を説明します。

クライアントのソースは「Jqueryを使ってHTML5ドラッグ&ドロップファイルアップロード」のままで利用できます。

使用する関数の説明

☆is_uploaded_file&move_uploaded_file☆
サーバーには、主にphpのis_uploaded_file関数とmove_uploaded_file関数を使用してファイルをサーバーに保存します。
・is_uploaded_file関数はHTTP POST でアップロードされたファイルかどうかを調べる。
・move_uploaded_file関数はアップロードされたファイルを新しい位置に移動する。

関数の詳細使い方と説明を下記phpオフィシャルページを参考してください。
is_uploaded_file:http://php.net/manual/ja/function.is-uploaded-file.php
move_uploaded_file:http://php.net/manual/ja/function.move-uploaded-file.php

move_uploaded_fileにはファイル保存場所の指定が必要ですので、phpファイルと同じ場所にfilesフォルダを作成し、書き込み権限を与えて置きましょう。

☆$_FILES☆
クライアントから送信されたファイル情報は$_FILESというグローバル配列に格納されます。
phpが自動的に値をセットしてくれます。
クライアントのjavascriptより”file”をキーとして$_FILESに保存されます。

fd.append('file', files[i]);

$_FILES[“file”][“tmp_name”]はPHPによって一時的に作成されたアップロードファイルの名前です。
$_FILES[“file”][“name”]はアップロードされたファイルのオリジナルのファイル名です。オリジナル名をfilesフォルダに保存します。

プログラム作成

クライアントから送信されたデータを受け取るphpプログラムを作成します。

<?php

if (is_uploaded_file($_FILES["file"]["tmp_name"])) {
  if (move_uploaded_file($_FILES["file"]["tmp_name"], "files/" . $_FILES["file"]["name"])) {
    echo $_FILES["file"]["name"] . "をアップロードしました。";
  } else {
    echo "ファイルをアップロードできません。";
  }
} else {
  echo "ファイルが選択されていません。";
}

?>

また、chmod関数を使って、サーバーに保存されたファイルの権限を修正できます。

chmod("files/" . $_FILES["file"]["name"], 0644);

以上、phpでサーバーにファイルを保存する方法でした。
–EVERY LITTLE MAKES–