ホームページ >php教程 >php手册 >PHP、ファイルアップロード

PHP、ファイルアップロード

WBOY
WBOYオリジナル
2016-06-13 12:35:511245ブラウズ

PHP では、ファイルのアップロードは通常、move_uploaded_file() を通じて実装されます。
bool move_uploaded_file (string filename, string destination) この関数は、filename で指定されたファイルが正当なアップロード ファイル (つまり、PHP の HTTP POST アップロード メカニズムを通じてアップロードされたファイル) であることをチェックし、保証します。ファイルが正当な場合は、宛先で指定されたファイルに移動されます。

filename が合法的にアップロードされたファイルではない場合、操作は行われず、move_uploaded_file() は FALSE を返します。

filename が正当にアップロードされたファイルであるが、何らかの理由で移動できない場合、操作は行われず、move_uploaded_file() は FALSE を返します。警報も発令されています。

以下では、例を使用して、PHP がファイルのアップロードを実装する方法を説明します。
test.php の元のファイル

コードをコピーします コードは次のとおりです。



Web サイト ファイルのアップロード例 -->


;

='ファイルをアップロード'>

MAX_FILE_SIZE 隠しフィールド (単位: バイト) はファイル入力フィールドの前に配置する必要があり、その値は受信したファイルの最大サイズです。これはブラウザに対する推奨事項であり、PHP もこれをチェックします。この設定はブラウザ側で簡単にバイパスできるため、この機能を使用して大きなファイルをブロックすることは期待しないでください。実際、PHP 設定の最大アップロード ファイル サイズは期限切れになりません。ただし、この項目をフォームに追加することをお勧めします。これにより、ユーザーが大きなファイルのアップロードを待って時間を費やした結果、ファイルが大きすぎてアップロードが失敗するというトラブルを回避できます。

注: ファイル アップロード フォームの属性が enctype="multipart/form-data" であることを確認してください。そうでない場合、ファイルはアップロードされません。

アップロード処理ページでは、アップロードされたファイルの情報が配列 $_FILES を通じて取得されます。上の例に示すように、ファイル アップロード フィールドの名前が「upfile」であると仮定すると、ファイル情報は次のようになります:

$_FILES['upfile']['name']

アップロードされたファイルの元のテキスト ファイル名。

$_FILES['upfile']['type']

ファイルの MIME タイプ (ブラウザーがこの情報を提供する場合)。例は「画像/gif」です。ただし、この MIME タイプは PHP 側ではチェックされないため、鵜呑みにしないでください。

$_FILES['upfile']['size']

アップロードされたファイルのサイズ (バイト単位)。

$_FILES['upfile']['tmp_name']

ファイルのアップロード後にサーバーに保存される一時ファイル名。

$_FILES['upfile']['error']

ファイルのアップロードに関連するエラー コード。

PHP は、対応するエラー コードをファイル情報配列とともに返します。このコードは、ファイルのアップロード時に生成されるファイル配列のエラー フィールドにあります。コードは次のとおりです:

UPLOAD_ERR_OK

値は 0 で、ファイルは正常にアップロードされます。

UPLOAD_ERR_INI_SIZE

値は 1 で、アップロードされたファイルは php.ini の Upload_max_filesize オプションの制限を超えています。デフォルト値は 2M です。より大きなファイルをアップロードしたい場合は、php.ini で Upload_max_filesize = 2M を検索すると、変更が有効になります。

UPLOAD_ERR_FORM_SIZE

値は 2 で、アップロードされたファイルのサイズが HTML フォームの MAX_FILE_SIZE オプションで指定された値を超えています。

UPLOAD_ERR_PARTIAL

値は 3 で、ファイルのアップロードは不完全で、その一部のみがアップロードされています。

UPLOAD_ERR_NO_FILE

値は 4 で、ファイルのアップロードは失敗しました。

UPLOAD_ERR_NO_TMP_DIR

値は 6 で、一時フォルダーが見つかりません。 PHP 4.3.10 および PHP 5.0.3 が導入されました。

UPLOAD_ERR_CANT_WRITE

値は 7 で、ファイルの書き込みに失敗しました。 PHP5.1.0が導入されました。

注: 上記の値は、PHP 4.3.0 以降は PHP 定数になりました。
action.php の元のコード
/**
学習経験を交換するための私たちのサイトへようこそ

*/

function getname($exname){
$dir = "tmp/" ;
$i=1;
if(!is_dir($dir)){
mkdir($dir,0777)
while(true); > if(!is_file($dir.$i.".".$exname)){
$name=$i.".".$exname;
}
$ i ;
}

return $dir.$name
}

$exname=strto lower(substr($_FILES['upfile']['name'],( strrpos ($_FILES['upfile']['name'],'.') 1)));
$uploadfile = getname($exname);

if (move_uploaded_file($_FILES[') upfile ']['tmp_name'], $uploadfile)) {
echo "

ファイルは正常にアップロードされました!


< ; br>";
}else {
echo "



" ;
}
echo "次はファイルのアップロードに関する情報です:


元のファイル名: ".$_FILES['upfile']['name'] 。
"

タイプ:" .$_FILES['upfile']['type'] .
"

一時ファイル名: ".$_FILES[ 'upfile' ]['tmp_name'].
"

ファイルサイズ: ".$_FILES['upfile']['size']
"
< br>エラー コード: ".$_FILES['upfile']['error'];
?>

ファイルがアップロードされるフォルダーのアクセス許可が少なくとも777. これはサーバー上で特に顕著ですが、作成したアップロード コードにエラーがない場合でも、インターネット上ではアップロード機能を実装できません。

この記事では、PHP を介してファイルをアップロードする方法についてのみ説明します。この部分をまだ見ていない人は参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。