ホームページ  >  記事  >  バックエンド開発  >  PHPファイルアップロード処理ケースの詳細説明

PHPファイルアップロード処理ケースの詳細説明

墨辰丷
墨辰丷オリジナル
2018-05-31 17:25:271307ブラウズ

この記事では、主に PHP ファイルのアップロード処理方法を紹介し、PHP ファイルのアップロード操作で発生する問題と関連する解決策を例の形で分析します。この記事の例は、PHP ファイルについて説明しています。アップロード処理方法。詳細は次のとおりです:

私は最近、長い間悩んでいた問題に遭遇しました。最初の考えを共有したいと思います。

PHP のアップロード メカニズムは完全にカプセル化されています。わずか数行のコードで実装できます。彼の実装プロセスは次のとおりです

ファイルを一時ディレクトリにアップロードします –> 指定されたディレクトリに move_uploadde_file() を使用します

これは PHP アップロード プロセスです。または、次のこともできます。途中で検証を実行します。たとえば、ドキュメントがアップロードによって送信されたかどうか、またはファイル拡張子が当社

と一連の検証によって許可されているかどうかを判断します。私が示した簡単なコードは出発点とみなすことができます。

$targetFolder = '/uploads'; // 定义根目录
if (!empty($_FILES)) {
  $tempFile = $_FILES['Filedata']['tmp_name'];
if(is_uploaded_file($tempFile))
{
  $targetPath = $_SERVER['DOCUMENT_ROOT'] . $targetFolder;
  $targetFile = rtrim($targetPath,'/') . '/' . $_FILES['Filedata']['name'];
  $fileTypes = array('jpg','jpeg','gif','png'); // 允许的后缀扩展
  $fileParts = pathinfo($_FILES['Filedata']['name']);
  if (in_array($fileParts['extension'],$fileTypes)) {
    move_uploaded_file($tempFile,$targetFile);
    echo '1';
  } else {
    echo '非法上传文档.';
  }
}else
{
  echo "非法上传文件";
}
}

上記の方法は基本的にファイルアップロードの要件を満たしています。しかし、それは私が必要としているものではありません。

アップロード関数

要件: まずクリックしてドキュメントをアップロードし、次にアップロードファイルを選択します。JS がアップロードされると、値が返され、ドキュメント名ボックスに現在のタイムスタンプ名を持つファイルが表示されます。

次に「送信」をクリックしてフォームを送信します。

サーバーは送信されたフォームを処理し、アップロードされたファイルの名前を変更します。

サーバーは IIS であり、マッピングを使用して実装された仮想ディレクトリです。

この場合、$_SERVER['DOCUMENT_ROOT']はPHPサイトのルートディレクトリにありません

アップロード機能は完了していますが、このファイルはダウンロードできません。サーバーのセキュリティ上の理由から、ファイルは引き続き PHP サイトに配置する予定です。

その後、私は思考制限に陥ってしまいました。

もう一度考えてみましょう:

なぜ PHP のアップロード メカニズムを再度実装する必要がないのか。

PHP は最初にファイルを一時ディレクトリに配置しませんか?では、なぜ JS アップロードが成功した後のディレクトリも一時ディレクトリ

であると仮定し、フォームを再度送信するときにファイルをコピーするのはなぜでしょうか。指定されたディレクトリに移動して、必要な機能を完了します。

PHPにはファイルコピー関数Copy()があり、rename()関数と連携します。このようにして、アップロードされたファイルの 2 回目の移動と名前変更が完了します。

注: ウィンドウ プラットフォームでゼロバイトのファイルをコピーすると、copy() は FALSE を返しますが、ファイルは正しくコピーされます。

すると、PHPはファイル処理においてLiunxのファイル処理メカニズムを積極的に参照しています。 PHP のファイル操作効率は、I/O 書き込みとオペレーティング システムに関係します。

要約: 上記がこの記事の全内容です。皆様の学習に役立つことを願っています。

関連する推奨事項:

phpApacheでテストした後の文字化け問題の解決策

php Cookieを使用してWebページにユーザー名とパスワードを記憶する機能を実装します

PHP Curlを使用して実装されています 模擬ログインとデータキャプチャ機能の例


以上がPHPファイルアップロード処理ケースの詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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