この記事の例では、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 プログラミングのすべての人に役立つことを願っています。
PHP ファイルのアップロード処理事例分析に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。