ホームページ  >  記事  >  バックエンド開発  >  アップロードされたファイルの名前を再定義する方法の詳細な例

アップロードされたファイルの名前を再定義する方法の詳細な例

怪我咯
怪我咯オリジナル
2017-05-02 11:28:242780ブラウズ

ファイルをアップロードするときにアップロードファイルのパスを指定する必要がありますが、多数のユーザーがアップロードした異なるファイルに直面すると、ファイル名が重複してファイルが置き換えられる可能性が避けられません。が失われるため、アップロードしたファイルの名前を変更する必要があります。再定義は非常に重要です。この章ではそれについて説明します。アップロードされたファイルの名前はどのように定義すればよいですか?

まず、strstr() 関数を通じてアップロードされたファイルの名前をインターセプトし、アップロードされたファイルのサフィックスを取得します。

次に、time() 関数を通じてシステムの現在のタイムスタンプを取得し、アップロードされたファイルの名前を再定義します

move_uploaded_file() 関数を使用してファイルをアップロードします。

ファイルのアップロードを実行する前に、スクリプトを通じて操作できないファイルの潜在的な攻撃や違法な管理を防ぐために、is_uploaded_file() 関数を使用して、指定されたファイルが HTTP POST を通じてアップロードされたかどうかを確認する必要があります。アップロードされている場合は、戻ります。真 。

is_uploaded_file() 関数

is_uploaded_file() 関数は、指定されたファイルが HTTP POST 経由でアップロードされるかどうかを決定します。その構文は次のとおりです。

is_uploaded_file(filename)

パラメーター ファイル名は $_FILES['filename'][' と同様に指定する必要があります。 tmp_name'] 変数、クライアントからアップロードされたファイル名は使用できません$_FILES['filename']['name']

アップロードされたファイルの名前を再定義する方法の詳細な例アップロードされたファイルは、悪意のあるユーザーがアップロードできないことを保証するために is_uploaded_file() 関数を通じて判定されます。 /etc/passwd などのアクセスできないファイルにアクセスします。

move_uploaded_file() 関数

move_uploaded_file() 関数は、サーバー内の指定された場所にファイルをアップロードします。成功した場合は true を返します。それ以外の場合は false を返し、構文は次のとおりです

move_uploaded_file(filename,destination)

パラメーター filename は、アップロードされたファイルの一時ファイル名を指定します。つまり、パラメーターの宛先は、後で保存された新しいパスと名前を参照します。ファイルがアップロードされます。パラメータ filename が正当にアップロードされたファイルでない場合、操作は行われません。パラメータ filename が正当にアップロードされたファイルであるが、何らかの理由で移動できない場合は、

move_uploaded_file() は false を返します。何らかの操作のイベントでは、move_uploaded_file() が False を返し、警告メッセージが発行されます。

最後に rand 関数を使用し、アップロードされたファイルの新しい名前としてランダムに生成されるランダムな整数を使用します。

応用例

この例では、アップロードされるファイルの名前を再定義し、アップロードするファイルの名前を選択し、「アップロード」ボタンをクリックすると、ファイルは、プログラムで指定したローカルパスを変更し、ファイル名を再定義します。

アップロードされたファイルの名前を再定義する方法の詳細な例

この例のキーコードは次のとおりです:

<?PHP
header("content-type:text/html;charset=utf-8");
if(!empty($_FILES[up_picture][name])){                                       //判断上传文件是否为空
    if($_FILES[&#39;up_picture&#39;][&#39;error&#39;]>0){                                    //判断文件是否可以上传到服务器
        echo "上传错误";
        switch($_FILES[&#39;up_picture&#39;][&#39;error&#39;]){
            case 1:
                echo "上传文件大小超出配置文件规定值";
                break;
            case 2:
                echo "上传文件大小超出表单中约定值";
                break;
            case 3:
                echo "上传文件不全";
                break;
            case 4:
                echo "没有上传文件";
                break;
        }
    }else{
        if(!is_dir("./upfile/")){                                           //判断指定目录是否存在
            mkdir("./upfile/");                                             //创建目录
        }
        $path=&#39;./upfile/&#39;.time().strstr($_FILES[&#39;up_picture&#39;][&#39;name&#39;],&#39;.&#39;);//定义文件名称和存储位置
        if(is_uploaded_file($_FILES[&#39;up_picture&#39;][&#39;tmp_name&#39;])){           //判断是否通过HTTP POST上传的
            if(!move_uploaded_file($_FILES[&#39;up_picture&#39;][&#39;tmp_name&#39;],$path)){       //执行上传
                echo "上传失败";
            }else{
                echo "文件".time().$_FILES[&#39;up_picture&#39;][&#39;name&#39;]."上传成功,大小为:".$_FILES[&#39;up_picture&#39;][&#39;size&#39;];
            }
        }else{
            echo "上传文件".$_FILES[&#39;up_picture&#39;][&#39;name&#39;]."不合法!";
        }
    }
}
?>

アップロードされたファイルの名前を再定義する方法の詳細な例 アップロードされたファイルの名前の定義は、ファイルアップロードプログラムで不可欠な機能である必要があり、これにより、同じ名前のファイルを置き換えると、1 つのファイルに同じ内容のファイルが多数存在する可能性があります。詳細については、PHP ファイル処理のトピック

【おすすめ関連記事】

PHP ファイルのアップロード - move_uploaded_file() 関数の使用方法の詳細な説明を参照してください

以上がアップロードされたファイルの名前を再定義する方法の詳細な例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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