ホームページ  >  記事  >  バックエンド開発  >  PHPでアップロードしたファイルの保存パスを変更する方法

PHPでアップロードしたファイルの保存パスを変更する方法

PHPz
PHPzオリジナル
2023-04-04 10:41:181626ブラウズ

PHP はサーバーサイドのスクリプト言語として、Web 開発で広く使用されています。 Web アプリケーションの開発プロセスでは、多くの場合、写真やドキュメントなどのファイルをアップロードする必要があります。 PHP には便利なファイルアップロード機能が用意されていますが、アップロードされたファイルはデフォルトではサーバーの一時ディレクトリに保存されるため、ファイル管理やアプリケーションには不便です。

したがって、多くの Web 開発者は、アップロードされたファイルが指定されたディレクトリに保存されるように、PHP アップロードされたファイルの保存パスを変更する必要があります。この記事では、PHP でアップロードしたファイルの保存パスを変更する方法と、パスを変更する際の注意点を中心に紹介します。

1. PHP のアップロード ディレクトリを設定します

PHP では、アップロードされたファイルを保存するパスは変数 $_FILES['userfile']['tmp_name'] によって制御されます。 ### の。デフォルトでは、この変数は PHP サーバー上の一時アップロード ディレクトリを指します。特定のパスは通常、/tmp または /var/tmp です。アップロードされたファイルを指定したディレクトリに保存するには、upload_tmp_dir 変数を設定して、ファイルのアップロード用のディレクトリ パスを指定する必要があります。

具体的な設定方法は 2 つあります。

    PHP 設定ファイル php.ini で設定します。
次の 2 つのパラメータを見つけます。

upload_tmp_dir = /path/to/upload/dir
upload_max_filesize = 2M
このうち、upload_max_filesize は、指定されたファイルのアップロードの最大サイズ (バイト単位) です。上記のコードは、アップロードされるファイルの最大サイズが 2M であることを示しています。

    PHP コードで
  1. ini_set 関数設定を使用します。
php.ini 構成ファイルを変更する権限がない場合は、PHP コードで

ini_set 関数を使用して、アップロード ディレクトリのパスを動的に設定できます。例:

ini_set('upload_tmp_dir', '/path/to/upload/dir');
ini_set('upload_max_filesize', '2M');
これらのコードは、PHP アップロード パスを

/path/to/upload/dir に設定し、アップロードされるファイルの最大サイズを 2M に制限します。

2. アップロードされたファイルのターゲット パスを設定します

アップロード ディレクトリを設定すると、PHP はアップロードされたファイルを指定されたディレクトリに保存します。ただし、これまでのところ、アップロードされたファイル ストレージの最終的な宛先パスは指定されていません。このセクションでは、アップロードされたファイルの宛先パスを設定する方法について説明します。

    move_uploaded_file 関数を使用する
PHP では、組み込み関数

move_uploaded_file を使用して、アップロードされたファイルを指定されたターゲット パスに移動できます。 。 move_uploaded_file この関数は、アップロードされたファイルの一時パスとターゲット パスの 2 つのパラメータを受け入れます。例:

$uploadfile = '/path/to/upload/dir/' . basename($_FILES['userfile']['name']);
 
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
    echo "文件已经被成功上传!";
} else {
    echo "上传失败!";
}
上記のコードは、まずファイルをアップロードするための一時ディレクトリを定義し、

move_uploaded_file 関数を使用して、アップロードされたファイルを指定されたターゲット パスに移動します。これにより、指定したディレクトリに指定したファイル名でファイルを保存することができます。

    アップロードされたファイルの種類とサイズを確認してください
違法なファイルや大きなファイルのアップロードを避けるために、アップロードされたファイルの種類とサイズも確認する必要があります。アップロードプロセス中。これは、PHP の事前定義変数

$_FILES を使用して実現できます。例:

$uploadfile = '/path/to/upload/dir/' . basename($_FILES['userfile']['name']);
 
$allowedExtensions = ['jpg', 'png', 'gif'];
$maxSize = 1000000;
 
if (in_array(pathinfo($_FILES['userfile']['name'], PATHINFO_EXTENSION), $allowedExtensions)
    && $_FILES['userfile']['size'] <= $maxSize
    && move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
 
    echo "文件已经被成功上传!";
} else {
    echo "上传失败!";
}
コードでは、アップロードを許可するファイル タイプとファイル サイズを設定し、それに応じてフィルタリングします。アップロードされたファイルの種類とサイズが要件を満たしている場合、指定されたパスに保存されます。

3. 注意事項

    アップロード ディレクトリを設定するときは、ディレクトリの読み取りおよび書き込み権限を確認してください。そうでないと、ディレクトリにファイルを作成できません。
  1. アップロード ディレクトリを設定するときは、パス エラーを避けるために絶対パスを使用することをお勧めします。
  2. ファイルをアップロードするときは、違法なファイルやサーバー リソースを多く消費する大きなファイルのアップロードを避けるために、ファイルのサイズと種類を確認する必要があります。
  3. ファイルをアップロードするときは、アップロードされたファイルの名前と種類を信頼しないでください。ファイル名の衝突やセキュリティの問題を防ぐために、SHA1 またはランダムな文字列を使用してファイル名を変更することをお勧めします。
概要

この記事では、PHP アップロード ファイルの保存パスを変更する方法と、アップロード ファイルのターゲット パスを設定する方法を紹介します。特定の実装プロセスでは、ファイルのアップロードの安定性とセキュリティを確保するために、いくつかの予防措置に従う必要があります。以上の内容が皆様のWebアプリケーション開発のお役に立てれば幸いです!

以上がPHPでアップロードしたファイルの保存パスを変更する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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