Maison  >  Article  >  cadre php  >  Comment télécharger des images dans thinkphp

Comment télécharger des images dans thinkphp

PHPz
PHPzoriginal
2023-04-11 10:31:001335parcourir

Dans le développement Web, le téléchargement d'images est souvent considéré comme l'une des fonctions nécessaires, et ThinkPHP, un framework open source basé sur PHP, fournit une variété de méthodes pour implémenter la fonction de téléchargement d'images. Ci-dessous, nous présenterons une méthode d'implémentation de téléchargement d'images basée sur ThinkPHP.

Première étape : configurer les paramètres nécessaires

Dans le fichier de configuration config.php, nous devons d'abord configurer les paramètres tels que le chemin de téléchargement du fichier, la limite de taille d'image et la limite de type de fichier. La configuration spécifique est la suivante :

return [
    'upload_path' => './uploads/', //上传文件路径
    'img_max_size' => 2 * 1024 * 1024, //最大上传图片大小
    'img_allow_types' => 'jpg,png,gif,jpeg', //允许上传的文件类型
];

Étape 2 : Écrivez le code de téléchargement d'image

Dans ThinkPHP, nous pouvons implémenter la fonction de téléchargement d'image en utilisant la classe de téléchargement. Importez d'abord la classe de téléchargement :

use think\facade\Request;
use think\facade\Filesystem;

class ImageUpload
{
    public function upload()
    {
        $img_file = Request::file('img'); //获取上传的图片文件
        $img_path = config('upload_path'); //获取上传路径
        $max_size = config('img_max_size'); //获取最大文件尺寸
        $allow_types = config('img_allow_types'); //获取允许上传的类型

        //判断上传文件是否有效、大小是否符合、类型是否正确
        if (!$img_file->isValid()) {
            return ['code' => 1, 'msg' => '上传图片无效'];
        }

        if ($img_file->getSize() > $max_size) {
            return ['code' => 2, 'msg' => '上传图片大小超过限制'];
        }

        if (!in_array($img_file->extension(), explode(',', $allow_types))) {
            return ['code' => 3, 'msg' => '上传图片类型不支持'];
        }

        //上传文件
        $file_info = $img_file->move($img_path);
        if ($file_info === false) {
            return ['code' => 4, 'msg' => '上传图片失败,请重试'];
        }

        //返回上传成功信息
        $file_name = $file_info->getSaveName();
        $file_url = Filesystem::getDiskConfig('public', ['url' => '/'])->getVisibility()->url($img_path . $file_name);
        return ['code' => 0, 'msg' => '上传图片成功', 'url' => $file_url];
    }
}

Étape 3 : Appelez le code de téléchargement d'image

Ensuite, nous pouvons appeler le code de téléchargement d'image dans le contrôleur et obtenir le résultat du téléchargement :

public function uploadImage()
{
    $result = (new ImageUpload())->upload();
    echo json_encode($result);
}

Enfin, il nous suffit d'appeler le téléchargement d'image code dans la page frontale Utilisez ajax pour télécharger des fichiers image sur le serveur :

<form id="image-form" action="/uploadImage" method="post" enctype="multipart/form-data">
    <input type="file" id="img-file" name="img" accept="image/*">
    <button type="submit">上传</button>
</form>

<script>
$(document).on('submit', '#image-form', function (event) {
    event.preventDefault(); 
    var formData = new FormData(document.getElementById('image-form'));
    $.ajax({
        url: '/uploadImage',
        type: 'post',
        data: formData,
        contentType: false,
        processData: false,
        dataType: 'json',
        success: function (res) {
            //处理上传结果
        },
        error: function (xhr, textStatus, errorThrown) {
            console.log(errorThrown);
        }
    });
});
</script>

En résumé, grâce aux étapes ci-dessus, la fonction de téléchargement d'images basée sur ThinkPHP a été complétée.

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