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

Comment télécharger des images dans thinkphp

PHPz
Libérer: 2023-04-11 13:56:14
original
1390 Les gens l'ont consulté

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', //允许上传的文件类型
];
Copier après la connexion

É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];
    }
}
Copier après la connexion

É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);
}
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal