Maison cadre php PensezPHP Comment Thinkphp5 implémente la fonction de téléchargement d'images, de fichiers audio et vidéo

Comment Thinkphp5 implémente la fonction de téléchargement d'images, de fichiers audio et vidéo

Jun 03, 2021 pm 03:53 PM
thinkphp5

Ce qui suit est la colonne du didacticiel du cadre thinkphp pour vous présenter comment implémenter la fonction de téléchargement d'images, de fichiers audio et vidéo dans Thinkphp5. J'espère que cela vous sera utile. amis dans le besoin !

La première est le téléchargement synchrone. La méthode de téléchargement la plus basique consiste à sauter après avoir cliqué sur le formulaire Soumettre.

Le code frontal suivant

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>上传文件</title>
</head>
<body>
  <form action="upload" enctype="multipart/form-data" method="post">
    <input type="file" name="image" />
    <br>
    <input type="submit" value="上传" />
  </form>
</body>
</html>
Copier après la connexion

Notez que le enctype doit êtreenctype="multipart/form-data" et la solution doit être post.

Pour le code back-end, prenez simplement l'exemple de code du site officiel tp5 :

 public function upload(){
  // 获取表单上传文件 例如上传了001.jpg
  $file = request()->file(&#39;image&#39;);
  // 移动到框架应用根目录/public/uploads/ 目录下
  if($file){
    $info = $file->move(ROOT_PATH . &#39;public&#39; . DS . &#39;uploads&#39;);
    if($info){
      // 成功上传后 获取上传信息
      // 输出 jpg
      echo $info->getExtension();
      // 输出 20160820/42a79759f284b767dfcb2a0197904287.jpg
      echo $info->getSaveName();
      // 输出 42a79759f284b767dfcb2a0197904287.jpg
      echo $info->getFilename();
    }else{
      // 上传失败获取错误信息
      echo $file->getError();
    }
  };
 }
Copier après la connexion

Plus tard, j'ai découvert que ce que je faisais était très simple, j'ai donc amélioré le code front-end, et le code frontal a implémenté la vérification du type de fichier. La synchronisation a été modifiée en soumission asynchrone ajax, et les données du fichier ont été soumises à formdata. Le code d'arrière-plan n'a pas beaucoup changé et le lien pour soumettre le fichier a été renvoyé, tandis que le code frontal a implémenté la vérification du type de fichier. l'aperçu de fin ne pouvait prévisualiser que les images. Le code frontal modifié est

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>上传文件</title>
</head>
<body>
  <form action="uploads1a" id="myform">
    <input type="file" name="image" id="file" />
  </form>
  <p id="test"></p>
  <button id="btn">点击上传</button>
  <p>
    <img src="" id="see">
  </p>
  <script type="text/javascript">
  var btn = document.getElementById("btn");
  var file=document.getElementById("file");
  var promise=["png","jpg","jpeg","gif","mp3","mp4","svg"];
  file.onchange=function(){
    var name=file.value;
    var ext=name.substring(name.lastIndexOf(".") + 1).toLowerCase();
    var res=promise.indexOf(ext);
    if (res<0) {
      alert("文件格式不正确");
      document.getElementById("btn").disabled=true;
    }else{
      document.getElementById("btn").disabled=false;
    }
  }
  btn.onclick = function() {
    var val=document.getElementById("file").value;
    if (val.length==0) {
      return;
    }
    var fromData = new FormData(document.forms[0]);
    fromData.append("test", "formdata");
    var oAjax = new XMLHttpRequest();
    oAjax.open(&#39;post&#39;, "uploadAjax", true);
    oAjax.send(fromData);
    oAjax.onreadystatechange = function() {
      if (oAjax.readyState == 4) {
        if (oAjax.status >= 200 && oAjax.status < 300 || oAjax.status == 304) {
          console.log(oAjax.responseText);
          var data=JSON.parse(oAjax.responseText);
          document.getElementById("see").setAttribute("src","/thinkphp"+data.src);
          document.getElementById("file").value="";
        } else {
          console.log(oAjax.status);
        }
      }
    };
  }
  </script>
</body>
</html>
Copier après la connexion

et le code back-end a été amélioré

public function uploadAjax(){
    // 获取表单上传文件 例如上传了001.jpg
  $file = request()->file(&#39;image&#39;);
  $test=request()->post("test");
  $src=[];//返回文件路径
  // 移动到框架应用根目录/public/uploads/ 目录下
  if($file){
    $info = $file->move(ROOT_PATH . &#39;public&#39; . DS . &#39;uploads&#39;);
    if($info){
      // 成功上传后 获取上传信息
      // 输出 jpg
       $info->getExtension();
      // 输出 20160820/42a79759f284b767dfcb2a0197904287.jpg
       $info->getSaveName();
      // 输出 42a79759f284b767dfcb2a0197904287.jpg
       $info->getFilename();
       $src["src"]=DS.&#39;public&#39;.DS.&#39;uploads&#39;.DS.$info->getSaveName();
    }else{
      // 上传失败获取错误信息
       $file->getError();
    }
  };
    return json_encode($src);
  }
Copier après la connexion

dans les détails, comme les informations de retour d'erreur après le téléchargement ne sont pas traitées.

La mise en œuvre globale est la suivante. En tant que scénario commercial courant, il reste encore beaucoup à faire, comme supprimer le fichier téléchargé ou vérifier si le fichier a été téléchargé si le téléchargement ne peut pas être téléchargé. à nouveau ou supprimé Téléchargé plus tôt. Bien entendu, si le nom du fichier n'est pas traité et que le nom d'origine est téléchargé, le fichier original sera écrasé après le téléchargement.

Recommandations associées : Les 10 derniers didacticiels vidéo thinkphp

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Vous avez un jeu croisé?
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Que dois-je faire si j'obtiens une erreur lors du déploiement de thinkphp5 dans Pagoda ? Que dois-je faire si j'obtiens une erreur lors du déploiement de thinkphp5 dans Pagoda ? Dec 19, 2022 am 11:04 AM

Solution à l'erreur signalée lors du déploiement de thinkphp5 dans Pagoda : 1. Ouvrez le serveur Pagoda, installez l'extension php pathinfo et activez-la ; 2. Configurez le fichier « .access » avec le contenu « RewriteRule ^(.*)$ index.php » ?s=/$1 [QSA ,PT,L]”; 3. Dans la gestion du site Web, activez simplement le pseudo-statique de thinkphp.

Que dois-je faire si la réécriture d'URL thinkphp5 échoue ? Que dois-je faire si la réécriture d'URL thinkphp5 échoue ? Dec 12, 2022 am 09:31 AM

Solution pour que la réécriture d'URL thinkphp5 ne fonctionne pas : 1. Vérifiez si le module mod_rewrite.so est chargé dans le fichier de configuration httpd.conf ; 2. Remplacez None dans AllowOverride None par All ; (.*)$ index.php [L,E=PATH_INFO:$1]" et enregistrez-le.

Comment obtenir l'URL demandée dans thinkphp5 Comment obtenir l'URL demandée dans thinkphp5 Dec 20, 2022 am 09:48 AM

Méthodes permettant à thinkphp5 d'obtenir l'URL demandée : 1. Utilisez la méthode "$request = Request::instance();" de la classe "\think\Request" pour obtenir les informations actuelles sur l'URL ; fonction "$request-> url()" pour obtenir l'adresse URL complète incluant le nom de domaine.

Que dois-je faire si la publication thinkphp5 ne parvient pas à obtenir la valeur ? Que dois-je faire si la publication thinkphp5 ne parvient pas à obtenir la valeur ? Dec 06, 2022 am 09:29 AM

thinkphp5 post ne peut pas obtenir de valeur car TP5 utilise la fonction strpos pour trouver la chaîne app/json dans la valeur de type de contenu de l'en-tête. La solution consiste à définir la valeur de type de contenu de l'en-tête sur app/json.

Comment supprimer l'icône de la barre de titre thinkphp5 Comment supprimer l'icône de la barre de titre thinkphp5 Dec 20, 2022 am 09:24 AM

Comment supprimer l'icône de la barre de titre thinkphp5 : 1. Recherchez le fichier favicon.ico sous le framework thinkphp5 public. 2. Supprimez le fichier ou choisissez une autre image pour le renommer en favicon.ico et remplacez le fichier favicon.ico d'origine.

Que dois-je faire si thinkphp5 indique que le contrôleur n'existe pas ? Que dois-je faire si thinkphp5 indique que le contrôleur n'existe pas ? Dec 06, 2022 am 10:43 AM

Solution pour thinkphp5 indiquant que le contrôleur n'existe pas : 1. Vérifiez si l'espace de noms dans le contrôleur correspondant est écrit correctement et remplacez-le par le bon espace de noms ; 2. Ouvrez le fichier tp correspondant et modifiez le nom de la classe.

Comment interroger les données d'hier dans ThinkPHP5 Comment interroger les données d'hier dans ThinkPHP5 Dec 05, 2022 am 09:20 AM

Comment interroger les données d'hier dans ThinkPHP5 : 1. Ouvrez les fichiers liés à ThinkPHP5 ; 2. Interrogez les données d'hier via l'expression "db('table')->whereTime('c_time', 'hier')->select();" .

Comment définir des invites d'erreur dans thinkphp5 Comment définir des invites d'erreur dans thinkphp5 Dec 07, 2022 am 10:31 AM

Comment définir les invites d'erreur dans thinkphp5 : 1. Entrez le dossier public dans le répertoire racine du projet et ouvrez le fichier d'entrée index.php ; 2. Affichez les commentaires sur le commutateur de mode de débogage ; 3. Ajustez la valeur de la constante "APP_DEBUG" ; sur true pour afficher l'invite de message d'erreur.

See all articles