ホームページ > php教程 > php手册 > PHP3を使用したファイルアップロードの実装

PHP3を使用したファイルアップロードの実装

WBOY
リリース: 2016-06-21 09:02:25
オリジナル
870 人が閲覧しました

PHP3 は非常に強力な CGI スクリプト言語、その言語機能は基本的に C から派生しており、その実装は PERL に似ており、データベースに対する固有のサポートにより実現されています。 ASP の強力な敵。

まずフロントデスクにインターフェースが必要です



>
< < FORM ENCTYPE = " SubmitForm
"
ACTION = "upload.php3" METHOD = "POST" >
< INPUT TYPE = "hidden" NAME = "MAX_FILE_SIZE" ="1000000" >
< NAME = "アップロードファイル
"
TYPE = "ファイル" SIZE = "30" < /TD >
< TR >
< 入力名 =
"
送信 " TYPE = "送信"
< 入力名 = "リセット"値 =
"
リセット
" < /TD > /TR > < /FORM > < /BODY > >

> MAX_FILE_SIZE の非表示の値の範囲は次のとおりです。
VALUE
を設定すると、アップロードされる ファイル のサイズを制限できます。

次に、バックグラウンドでファイルのアップロード操作を実装します。最も基本的なアップロードであれば、
If($UploadFile != "なし") { copy($UploadFile,"$UploadFile_name");
unlink($UploadFile)
}
else
{
echo "
アップロードするファイルが選択されていません! ";
}
? > >
値が form
は自動的に同じ名前の変数に代入され、$
UploadFileを介して直接渡されます >アップロードされたファイルにはアクセスできますが、これ以降がファイルを保存する変数である場合、ファイル名は別の $UploadFile_name 変数を通じて取得する必要があります。一時ファイルをコピーした後、一時ファイルを削除します (リンク解除)。 上記のコードは完全に動作しますが、実際のアプリケーションでは抜け穴がたくさんあります。

まず、アップロードされたファイルを固定ディレクトリに保存する必要があります。ここでは
$UploadPath
を使用します。 >
$UploadPath = "/home など、 変数に保存します。 /flier/upload/";

またはより複雑な自動位置決め (

$アップロードパス = AddSlashes
(ディレクトリ名
($PATH_TRANSLATED))."\upload\"; PATH_TRANSLATED名前が示すように、現在の送信ディレクトリです。

アップロードされたファイルを保存するための
upload
という名前のサブディレクトリであると仮定します。
dirname関数はディレクトリ名を返し、サブディレクトリ名 を追加します。 次に、変数 $FileName
を使用して、アップロードされた完全なファイル名とパス $
FileName を保存します。 = $ UploadPath.$UploadFile_name; 次に、上に示すように、アップロードされたファイル の簡単な情報もユーザーに知ってもらいたいと考えています。 if($UploadFile_size < 1024)
//
アップロードファイル サイズ
{
$FileSize = (文字列)$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 "
ファイル
$ アップロードファイル名

($
FileSize)アップロード成功! ";
} else {
echo " ファイル
$
アップロードファイル名

アップロードに失敗しました! "; } unlink($UploadFile); } else {
echo "
ファイル
$
UploadFile_name

は既に存在します。 "; } 次に、大きなファイルをアップロードするときにタイムアウトが発生しやすいことを考慮する必要があります。
を使用できます。 set_time_limit

($TimeLimit); タイムアウト制限時間を増やします 最後に、セクションと実装コードを 1 つのファイルに結合します。これを実現するには、 形式の >< に暗黙の値 <🎜 を追加します。 ; INPUT TYPE = "hidden" NAME = "UploadAction" VALUE = "1" > 別の方法で処理できるように現在の状態 (インターフェイスまたは実装) を示します。 完成したコードは次のとおりです (ファイル名 upload.php3)

< if(
!$): <

< HEAD >
ファイル アップロード インターフェイス

multipart /form-data" NAME =
"
SubmitForm" ACTION = "upload.php3" METHOD = "POST" >
< ; 入力タイプ = "隠し" 名前 = "MAX_FILE_SIZE" >
< 入力タイプ = "隠し" 名前 = "
UploadAction" VALUE = "1" >
< TR > < TD >< INPUT NAME = "
UploadFile " TYPE =
"file" SIZE = "30" >< /TD > < /TR >
< TR >
< 入力名 = "送信" 値 =
送信
" TYPE = "送信" >< /TD >
< TD >< 入力名 = "リセット" 値 = "
リセット
" TYPE = "リセット" > < >
< /FORM >
:
< HEAD >
<
ファイルアップロードコード<ヘッド >
<

= 0; TimeLimit=60; /*
タイムアウト制限時間を設定します
デフォルトの時間は 30
時間無制限の場合は 0 に設定します */
set_time_limit($TimeLimit );

If(($UploadFile != "なし")&&
($UploadFile != " " ))
{
$UploadPath = AddSlashes(dirname
($PATH_TRANSLATED))."\upload\";
アップロードファイル ストレージパス
$FileName = $UploadPath.$UploadFile_name ; 🎜> //
アップロードファイル名

if($UploadFile_size < 1024)
// アップロード ファイル
サイズ {
$
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) " }
if(!file_exists
($
ファイル名
)) { if(copy($UploadFile,$FileName))
{
echo "ファイル

$
アップロードファイル名 ($FileSize) アップロード成功! "; } else { echo "

ファイル

$
アップロードファイル名 アップロードに失敗しました! "; } unlink($UploadFile);
}
else { echo "

ファイル

$
UploadFile_name は既に存在します。 "; } } else {
echo "
アップロードするファイルが選択されていません! "


set_time_limit(30); >デフォルトのタイムアウト設定を復元します
< A HREF = "upload.php3" >

< /A >
>
endif
;

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート