Maison  >  Article  >  cadre php  >  Comment implémenter la fonction de téléchargement de fichiers dans ThinkPHP6

Comment implémenter la fonction de téléchargement de fichiers dans ThinkPHP6

WBOY
WBOYoriginal
2023-06-20 08:35:133761parcourir

Avec le développement continu d'Internet, de plus en plus de sites Web doivent mettre en œuvre des fonctions de téléchargement de fichiers. Dans ThinkPHP6, il est également très simple d'implémenter la fonction de téléchargement de fichiers. Aujourd'hui, nous allons présenter comment implémenter la fonction de téléchargement de fichiers dans ThinkPHP6.

1. Configurer les paramètres de téléchargement de fichiers

Avant de commencer à implémenter la fonction de téléchargement de fichiers, vous devez d'abord définir les paramètres de téléchargement de fichiers dans le fichier de configuration de ThinkPHP6. Recherchez le fichier de configuration du projet config/app.php, puis ajoutez le code suivant dans le tableau params :

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

Ici, nous définissons la taille maximale de téléchargement de fichier à 10 Mo, et les suffixes de fichiers autorisés à être téléchargés sont jpg, gif, png , et jpeg. Le répertoire racine pour le téléchargement des fichiers est public/uploads/, et la règle de dénomination des sous-répertoires est définie pour être nommée par date (année, mois, jour).

2. Implémentez la fonction de téléchargement de fichiers

Après avoir configuré les paramètres de téléchargement de fichiers, vous pouvez commencer à implémenter la fonction de téléchargement de fichiers. Écrivez le code suivant dans le contrôleur :

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);
}

Ici, nous obtenons d'abord le fichier téléchargé via la méthode request()->file('image') pour déterminer si le fichier existe, puis utilisons la méthode validate() pour suffixer le ; fichier téléchargé. Vérifiez que le format de fichier téléchargé par l'utilisateur est correct ; enfin, utilisez la méthode move() pour télécharger le fichier et renvoyer le résultat d'un téléchargement réussi ou d'un échec de téléchargement.

3. Implémentation de la page

Enfin, nous devons implémenter la fonction de téléchargement de fichiers sur la page. Le code est le suivant :

<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>

Ici, nous avons ajouté un formulaire à la page et la valeur du nom de la balise d'entrée de. le fichier téléchargé est « image ». Utilisez ensuite la méthode ajax() de jQuery pour télécharger les données du formulaire sur le contrôleur en mode FormData et fournissez les invites correspondantes une fois le téléchargement réussi ou échoué.

4. Résumé

Grâce au code ci-dessus, nous avons implémenté avec succès la fonction de téléchargement de fichiers dans ThinkPHP6. Dans le même temps, nous devons également prêter attention à la sécurité, garantir que les fichiers téléchargés par les utilisateurs sont dans le format et la taille corrects, éviter que le téléchargement de fichiers ne nuise au système et garantir la sécurité des utilisateurs et du système.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn