Maison  >  Article  >  cadre php  >  Utilisez FTP pour télécharger des images dans thinkphp

Utilisez FTP pour télécharger des images dans thinkphp

尚
avant
2020-05-14 09:37:383265parcourir

Utilisez FTP pour télécharger des images dans thinkphp

La fonction de téléchargement d'images devrait être extrêmement courante. Nous faisons ici référence à la méthode d'intégration dans le framework ThinkPHP pour trier la fonction de téléchargement d'images FTP, afin qu'il soit pratique de télécharger des informations pertinentes. pendant les opérations en arrière-plan. Les images sont directement téléchargées sur le serveur d'images en ligne pour éviter le chargement lent des images consultées par un trafic important et réduire la pression d'accès au site Web.

1. Conception frontale

Il s'agit principalement de tester la mise en œuvre des fonctions, en utilisant la conception la plus simple, qui est à la fois pratique pour référence et propice à une fonction ultérieure. expansion. Le code principal de upload.html est joint ci-dessous. Portez une attention particulière au code entouré dans l'encadré rouge. Le style css est relativement simple. Si nécessaire, vous pouvez vous référer au code source ci-dessous.

Utilisez FTP pour télécharger des images dans thinkphp

2. Conception du contrôleur en arrière-plan

config.class.php Le code principal est le suivant, dans lequel le tableau conçu " conf "Vous n'avez besoin d'utiliser que deux champs ici - 'tag', 'value', vous pouvez utiliser le simple type varchar

public function upload(){
    if (IS_POST){
        foreach ($_FILES as $key => $value){
            $img = handleImg($key);
            $furl = C('REMOTE_ROOT').$img;
            if ($img){
                ftp_upload($furl,$img);
                $saveData['value'] = $img;
                M('conf')
                    ->where("tag = '".$key."'")
                    ->save($saveData);
            }
        }
        $this->success('FTP 测试完成',U('Config/upload'),2);
    }else{
        $imgUrl = M('conf')
            ->where("tag = 'upImg'")
            ->getField('value');
        $this->assign('imgUrl',$imgUrl);
        $this->display();
    }
}

3. Données de configuration

Dans le fichier de configuration public, configurez les données constantes suivantes. Le code de référence est le suivant. Faites attention à l'exactitude de la configuration du compte FTP et du mot de passe. Ceci est juste un exemple pour des raisons de sécurité.

      //ftp(外网服务器)上传文件相关参数
      'FTP_SEVER'       => 'http://img.52zhenmi.com',  //此地址,作为图片读取的位置 请上线前仔细确认
      'FTP_HOST'       => 'img.52zhenmi.com',
      'WEB_SEVER'      => 'http://img.52zhenmi.com',
      'WEB_M_SERVER'    => 'http://www.52zhenmi.com/m',
 
 
      'FTP_NAME'       => 'fexxxi',//ftp帐户
      'FTP_PWD'        => '1qxxxxxxw',//ftp密码
      'FTP_PORT'       => '21',//ftp端口,默认为21
      'FTP_PASV'       => true,//是否开启被动模式,true开启,默认不开启
      'FTP_SSL'        => false,//ssl连接,默认不开启
      'FTP_TIMEOUT'    => 60,//超时时间,默认60,单位 s
      'REMOTE_ROOT'    => '/',//图片服务器根目录

4. Importer des fichiers

Prenons mon code comme exemple Deux fichiers sont cités ici, et FTP.class.php est placé dans '/Bibliothèque/Think. ' ;

Upload.class.php est placé dans le répertoire '/Library/Org/Net'. Vous pouvez ajuster le répertoire en fonction de vos propres habitudes d'utilisation, à condition qu'il n'y ait aucun problème lors de l'instanciation du répertoire. chemin. C'est tout.

5. Ajouter des fonctions publiques

Faites attention à l'ajout des fonctions publiques utilisées à l'étape 2 ci-dessus.

/**
 * 图片上传的公共处理方法
 * @param string $fileName 图片上传的name
 * @return string 图片的存储路径
 */
function handleImg($fileName){
    if($_FILES[$fileName]['tmp_name'] != ""){
        $img = $_FILES[$fileName];
        $imgUrl = __ROOT__."/public";
        $upload = new \Org\Net\Upload($img, $imgUrl);
        return $upload->main();
    }
}

Fonction de téléchargement de fichier FTP

function ftp_upload($remotefile,$localfile){
    $ftp = new \Think\Ftp();
    $data['server'] = C('FTP_HOST');
    $data['username'] = C('FTP_NAME');//ftp帐户
    $data['password'] = C('FTP_PWD');//ftp密码
    $data['port'] = C('FTP_PORT');//ftp端口,默认为21
    $data['pasv'] = C('FTP_PASV');//是否开启被动模式,true开启,默认不开启
    $data['ssl'] = C('FTP_SSL');//ssl连接,默认不开启
    $data['timeout'] = C('FTP_TIMEOUT');//超时时间,默认60,单位 s
    $info = $ftp->start($data);
    if($info){
        if($ftp->put($remotefile,$localfile)){}
    }
    $ftp->close();
}

6. Capture d'écran de l'opération

Utilisez FTP pour télécharger des images dans thinkphp

Utilisez FTP pour télécharger des images dans thinkphp

7. , Conseils

Pour ce code de référence, la méthode publique handleImg() impliquée transférera d'abord l'image à télécharger vers le répertoire racine du site Web actuellement exploité, puis téléchargera l'image via ftp_upload() Lors du transfert vers le serveur FTP d'image correspondant, la première étape est redondante en termes d'étapes de mise en œuvre, principalement parce que le serveur de test pendant le processus de développement ne répond pas aux exigences du compte FTP et, en même temps, il doit faciliter les mises à jour en temps opportun du contenu en ligne. modifications.

Tutoriel recommandé : "TP5"

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer