ホームページ  >  記事  >  PHPフレームワーク  >  ThinkPHP6でファイルアップロード機能を実装する方法

ThinkPHP6でファイルアップロード機能を実装する方法

WBOY
WBOYオリジナル
2023-06-20 08:35:133765ブラウズ

インターネットの継続的な発展に伴い、ファイルのアップロード機能を実装する必要がある Web サイトがますます増えています。 ThinkPHP6 では、ファイルアップロード機能の実装も非常に簡単です。今回はThinkPHP6にファイルアップロード機能を実装する方法を紹介します。

1. ファイル アップロード パラメーターの構成

ファイル アップロード機能の実装を開始する前に、まず ThinkPHP6 構成ファイルでファイル アップロード パラメーターを設定する必要があります。プロジェクト構成ファイル config/app.php を見つけて、params 配列に次のコードを追加します。

'upload' => [
    'maxSize' => 1024 * 1024 * 10, //文件上传的最大大小
    'exts' => ['jpg', 'gif', 'png', 'jpeg'], //允许上传的文件后缀
    'rootPath' => app()->getRootPath() . 'public/uploads/', //文件上传的根目录
    'savePath' => '', //文件保存的子目录
    'subName' => ['date', 'Ymd'], //子目录名称的命名规则
],

ここでは、ファイルのアップロードの最大サイズを 10MB に設定し、アップロードできるファイルのサフィックスは jpg です。 、gif、png、jpegの4形式で、ファイルアップロードのルートディレクトリはpublic/uploads/、サブディレクトリの命名規則は日付(年、月、日)で命名されるように設定されています。

2. ファイル アップロード機能の実装

ファイル アップロード パラメーターを設定した後、ファイル アップロード機能の実装を開始できます。コントローラーに次のコードを記述します:

public function upload()
{
    $file = request()->file('image');
    if ($file) {
        $info = $file->validate(['ext' => 'jpg,png,gif,jpeg'])->move(config('upload.rootPath'));
        if ($info) {
            $data = [
                'code' => 0,
                'msg' => '上传成功',
                'url' => config('upload.rootPath') . $info->getSaveName(),
            ];
        } else {
            $data = [
                'code' => 1,
                'msg' => $file->getError(),
                'url' => '',
            ];
        }
    } else {
        $data = [
            'code' => 1,
            'msg' => '请选择要上传的文件',
            'url' => '',
        ];
    }

    return json($data);
}

ここでは、まず request()->file('image') メソッドを通じてアップロードされたファイルを取得し、ファイルが存在するかどうかを確認し、次に validate() を使用します。アップロードを検証するメソッド ファイルのサフィックスを検証して、ユーザーがアップロードしたファイル形式が正しいことを確認し、最後に move() メソッドを使用してファイルをアップロードし、アップロードの成功またはアップロードの失敗の結果を返します。

3. ページの実装

最後に、ページにファイル アップロード機能を実装する必要があります。コードは次のとおりです:

<form id="upload-form" action="<?php echo url('upload'); ?>" method="post" enctype="multipart/form-data">
    <input type="file" name="image" id="image" accept="image/jpeg,image/png,image/gif">
</form>
<button id="btn-upload" type="button">上传</button>

<script>
$(function() {
    $('#btn-upload').click(function() {
        var formData = new FormData($('#upload-form')[0]);
        $.ajax({
            url: $('#upload-form').attr('action'),
            type: 'post',
            data: formData,
            contentType: false,
            processData: false,
            success: function(res) {
                if (res.code === 0) {
                    alert(res.msg);
                    $('#image').val('');
                } else {
                    alert(res.msg);
                }
            },
            error: function(xhr, status, error) {
                alert('上传错误:' + error);
            }
        });
    });
});
</script>

ここでは、フォーム フォームを追加します。アップロードするページ ファイルの入力タグの名前の値は「image」で、jQuery の ajax() メソッドを使用してフォーム データを FormData モードでコントローラーにアップロードし、アップロードが成功または失敗した後に、それに応じたプロンプトを表示します。

4. 概要

上記のコード実装により、ThinkPHP6 にファイル アップロード機能を実装することができました。同時に、セキュリティにも注意を払い、ユーザーがアップロードしたファイルが正しい形式とサイズであることを確認し、ファイルのアップロードがシステムに害を及ぼすことを回避し、ユーザーとシステムのセキュリティを確保する必要があります。

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

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