Datei-Upload: Datei-Upload: Datei-Upload: Datei-Upload:

Heim  >  Artikel  >  Backend-Entwicklung  >  Thinkphp3.2 löst das Problem, dass beim Hochladen mehrerer Dateien nur eine Datei hochgeladen wird

Thinkphp3.2 löst das Problem, dass beim Hochladen mehrerer Dateien nur eine Datei hochgeladen wird

一个新手
一个新手Original
2017-10-03 05:58:141440Durchsuche

Einfache HTML-Seite:

index.html-Code:


<form action="{:U(&#39;index/upload&#39;)}" method="post" enctype="multipart/form-data">
    文件上传:<input type="file" name = "test[]">
    文件上传:<input type="file" name = "test[]">
    文件上传:<input type="file" name = "test[]">
    文件上传:<input type="file" name = "test[]">
    文件上传:<input type="file" name = "test[]">
    文件上传:<input type="file" name = "test[]">
    文件上传:<input type="file" name = "test[]">
    文件上传:<input type="file" name = "test[]">
    文件上传:<input type="file" name = "test[]">
    文件上传:<input type="file" name = "test[]">
    文件上传:<input type="file" name = "test[]">
    文件上传:<input type="file" name = "test[]">
    <input type="submit" value = "提交"></form>

Controller IndexController.class . PHP-Code:


<?php
namespace Home\Controller;use Think\Controller;class IndexController extends Controller {    
    public function index(){        
    $this->display();
    }    
    public function upload(){        
        if(IS_POST){            
        $config = array(                
              &#39;maxSize&#39;    =>    3145728,
                &#39;rootPath&#39;   =>    &#39;./Uploads/&#39;,
                &#39;savePath&#39;   =>    &#39;&#39;,
                &#39;saveName&#39;   =>    array(&#39;uniqid&#39;, mt_rand(1,999999).&#39;_&#39;.md5(uniqid())),
                &#39;exts&#39;       =>    array(&#39;jpg&#39;, &#39;gif&#39;, &#39;png&#39;, &#39;jpeg&#39;),
                &#39;autoSub&#39;    =>    true,
                &#39;subName&#39;    =>    array(&#39;date&#39;,&#39;Ymd&#39;),
            );            
            $upload = new \Think\Upload($config);// 实例化上传类
                  $info   =   $upload->upload();            
                  if(!$info) {                
                  $this->error($upload->getError());
            }else{                
                foreach($info as $file){                    
                echo $file[&#39;savepath&#39;].$file[&#39;savename&#39;];
                }
            }
        }else{            
            $this->display();
        }
    }
}

Das Upload-Ergebnis zeigt:

Viele Leute arbeiten an mehreren Beim Hochladen habe ich schließlich festgestellt, dass nur ein Bild hochgeladen wurde, hauptsächlich wegen der Namensgebung. Da es den gleichen Namen hat, ist am Ende nur noch ein Bild übrig
Lösung: Das erste:


$config = array(                
                &#39;maxSize&#39;    =>    3145728,
                &#39;rootPath&#39;   =>    &#39;./Uploads/&#39;,
                &#39;exts&#39;       =>    array(&#39;jpg&#39;, &#39;gif&#39;, &#39;png&#39;, &#39;jpeg&#39;),
                &#39;autoSub&#39;    =>    true,
                &#39;subName&#39;    =>    array(&#39;date&#39;,&#39;Ymd&#39;),
                &#39;saveRule&#39;   => &#39;&#39;,
            );

Lassen Sie die saveRule in $config leer. Der hochgeladene Name lautet: 59c8d38cdb968.jpg

Wenn Sie das Gefühl haben, dass dieser Name unzuverlässig ist, können Sie die zweite Methode verwenden:


$config = array(                
                &#39;maxSize&#39;    =>    3145728,
                &#39;rootPath&#39;   =>    &#39;./Uploads/&#39;,
                &#39;saveName&#39;   =>    array(&#39;uniqid&#39;, mt_rand(1,999999).&#39;_&#39;.md5(uniqid())),
                &#39;exts&#39;       =>    array(&#39;jpg&#39;, &#39;gif&#39;, &#39;png&#39;, &#39;jpeg&#39;),
                &#39;autoSub&#39;    =>    true,
                &#39;subName&#39;    =>    array(&#39;date&#39;,&#39;Ymd&#39;),
            );

Set $config: 'saveName' => array('uniqid', mt_rand(1,999999) .'_ '.md5(uniqid())),
Das Endergebnis ähnelt: 672563_30ad4d8a2aafc832363de8edc1940b5c59c8d44a303f9.jpg

Natürlich kann die Benennung wie folgt geändert werden benötigt, und mehrere Dateien können hochgeladen werden. Es gibt viele Methoden, hier ist nur eine einfache und bequeme Methode!

Das obige ist der detaillierte Inhalt vonThinkphp3.2 löst das Problem, dass beim Hochladen mehrerer Dateien nur eine Datei hochgeladen wird. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn