Heim  >  Artikel  >  Backend-Entwicklung  >  Lösen Sie das Problem, nur eine Datei hochzuladen, wenn Sie mehrere Dateien in Thinkphp3.2 hochladen

Lösen Sie das Problem, nur eine Datei hochzuladen, wenn Sie mehrere Dateien in Thinkphp3.2 hochladen

黄舟
黄舟Original
2017-09-26 09:08:191330Durchsuche

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


$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 der Meinung sind, 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 ist ähnlich wie: 672563_30ad4d8a2aafc832363de8edc1940b5c59c8d44a303f9.jpg

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

Das obige ist der detaillierte Inhalt vonLösen Sie das Problem, nur eine Datei hochzuladen, wenn Sie mehrere Dateien in Thinkphp3.2 hochladen. 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