ホームページ  >  記事  >  バックエンド開発  >  PHPファイルアップロード処理例

PHPファイルアップロード処理例

墨辰丷
墨辰丷オリジナル
2018-06-01 09:20:431496ブラウズ

この記事では、主に 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 書き込みとオペレーティング システムに関係します。

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

関連する推奨事項:

PHP は post メソッドを使用して json データを送信するインターフェースを呼び出します


php結合ソートを実装する簡単な方法

PHP と Ueditor を組み合わせて画像を変更する方法アップロードパス


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

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