上传
如何用PHP实现文件上传(实例1)
上载文件表单网页:updatefile.htm
上载文件表单---------------------------- ----------------------------------
アップロードされたファイルを処理するための Web ページ: updatefile.php3
< html> ;
アップロードされたファイルを処理しています head>
copy($userfile, "newfilename");
echo $userfile." - ユーザーがサーバーにアップロードしたファイルの一時ストレージの名前
";
echo $userfile_name ." - ユーザーのマシン上のファイルの元の名前
";
echo $userfile_size." - アップロードされたファイルの実際のバイト数
";
echo $userfile_type." -ユーザーのブラウザ この情報が提供される場合、それは MIME タイプを表します。たとえば、
image/gif
";
?>
------。 --- --------------------------------------------------- --- ----- 注: ファイルをアップロードした後、ファイルを新しい場所にコピーするか、名前を変更する必要があります。そうしないと、プロセスが実行されると、サンプルのアップロードは削除されます
使い方ファイルのアップロードを実装するための PHP3 (例 2)
PHP3 は、基本的に C から派生した非常に強力な CGI スクリプト言語です。
実装という点では、PERL に似ており、データベースに対する固有のサポートが備わっています。それを作るASP
の強力な敵。
まず、フロントデスクにインターフェイスが必要です
ファイルアップロードインターフェイス MAX_FILE_SIZE の隠し値フィールドです。その VALUE を設定することで、アップロードされるファイルのサイズを制限できます。
次に、バックグラウンドでファイルのアップロード操作を実装します。最も基本的なアップロードであれば、わずか数行で完了できます
If($UploadFile != "none")
{
copy($UploadFile,"$UploadFile_name");
unlink ($UploadFile) ;
}
else
{
echo "アップロードするファイルが選択されていません!";
}
?>
フォームで渡された値は自動的に同じ名前の変数に代入されるため、アップロードされたファイルには
$UploadFile を通じて直接アクセスできますが、これはファイルを保存する変数であるため、
ファイル名は別の $UploadFile_
name 変数を通じて取得する必要があります。ファイルをコピーした後は、一時ファイルを削除(リンク解除)してください。
上記のコードは完全に機能しますが、実際のアプリケーションでは抜け穴がたくさんあります。徐々に改善していきましょう
まず、アップロードされたファイルは、
$UploadPath 変数を使用して保存する必要があります。ここでは、
$UploadPath = "/home/flier/upload/";
または、より複雑な自動配置、例えば
$UploadPath = AddSlashes(dirname
($PATH_TRANSLATED))."\upload\";
$ などです。 PATH_TRANSLATED は、名前が示すように、現在の送信ディレクトリです。
アップロードされたファイルを保存するための、upload
という名前のサブディレクトリがあるものとします。 dirname 関数は、ディレクトリ名
を返し、サブディレクトリ名
を追加し、変数 $FileName を使用してアップロードされた完全なファイル名とパスを保存します
$FileName = $UploadPath.$UploadFile_name;
次に、アップロードされたファイルのサイズなど、アップロードされたファイルに関する簡単な情報をユーザーに知ってもらいたいと考えています
if($UploadFile_size //アップロード ファイル サイズ
{
$FileSize = (string)$UploadFile_size 。 "バイト ";
}
elseif($UploadFile_size <(1024 * 1024))
{
$FileSize =number_format((double)
($UploadFile_size / 1024), 1) " KB";
}
else
{
$FileSize =number_format((double)
($UploadFile_size / (1024 * 1024)), 1) . " MB";
}
number_format 関数は出力をフォーマットする役割を果たします。具体的な使用法についてはマニュアルを参照してください。
次に、ファイルが既に存在し、コピー操作が失敗する状況を考慮して、対応するプロンプト情報を提供する必要があります
if(!file_exists($FileName))
{
if(copy($UploadFile,$FileName)) echo " File $ UploadFile_name
($ Filesize) は正常にロードされました! H {
echo "file $ UploadFile_name はすでに存在します! ";
}
その場合、大きなファイルをアップロードするときにタイムアウトが発生しやすいことを考慮する必要があり、
set_time_limit( $TimeLimit); タイムアウト制限を増やします。
最後に、セクションと実装コードを別のファイルに統合します。このアイデアを実現するために、フォーム
現在の状態(インターフェースまたは実装)を以下のように示します
(ファイル名upload.php3)
if(!$UploadAction):
?>
ファイルアップロードインターフェース else:
?>
ファイルアップロードコード$ UploadAction=0;
$TimeLimit=60; /*タイムアウト制限時間を設定します
デフォルトの時間は30秒です
0に設定すると無制限になります*/
set_time_limit($TimeLimit);
If(( $ UploadFile != "none")&&
($UploadFile != ""))
{
$UploadPath = AddSlashes(dirname($PATH_TRANSLATED))."\upload\"
//アップロードファイルの保存パス
$FileName = $UploadPath.$UploadFile_name; //アップロードファイル名
if($UploadFile_size <1024) //アップロードファイルサイズ
{
$FileSize = (string)$UploadFile_size . "bytes";
}
elseif($UploadFile_size < (1024 * 1024))
{
$FileSize =number_format((double)($UploadFile_size / 1024), 1) . " KB";
}
else
{
$FileSize =number_format((double)($ UploadFile_size/ (1024*1024)),1)."MB";
}
if(!file_exists($FileName))
{
if(copy($UploadFile,$FileName))
{
echo "File$ UploadFile_name ( $FileSize) が正常にアップロードされました。 ";}} S eLSE
{
echo" ファイル $ Uploadfile_name のアップロードに失敗しました! ";
}
unlink($UploadFile);
}
else
{
echo "ファイル $UploadFile_name はすでに存在します。 ";
}
}
else
{
echo "アップロードするファイルが選択されていません!";
}
set_time_limit(30); //デフォルトのタイムアウト設定に戻します
?>
戻る< ;/A>
endif;
?>