Thinkphp3.2の問題を分析して複数ファイルアップロードと1ファイルのみアップロードの問題を単純に解決

不言
リリース: 2023-03-30 18:28:02
オリジナル
1858 人が閲覧しました

次の記事では、Thinkphp3.2 を使用して、複数のファイルをアップロードするときに 1 つのファイルしかアップロードできない問題を簡単に解決する記事を紹介します。内容がとても良かったので、参考としてシェアさせていただきます。

html 単純なページ:

##index.html コード:

<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 コード:

<?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();
  }
 }
}
ログイン後にコピー

アップロード結果の表示:

複数のファイルをアップロードすると、最終的に 1 つのファイルしかアップロードされていないことがわかります。これは主に名前が原因です。同じ名前なので、最後に残る画像は 1 つだけです。

解決策:
最初のメソッド:

$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;,
   );
ログイン後にコピー

アップロード後、$config 内の saveRule を空にします。は: 59c8d38cdb968.jpg

この名前が信頼できないと思われる場合は、

2 番目の方法を採用できます:

$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())),

最後の結果は次のとおりです同様: 672563_30ad4d8a2aafc832363de8edc1940b5c59c8d44a303f9.jpg


もちろん、複数のファイルをアップロードする方法はたくさんあります。便利な方法!

上記がこの記事の全内容です。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。

関連する推奨事項:

thinkphp5 の画像アップロードとサムネイル生成方法

ThinkPHP3.2.3 検証コードの表示と更新とverify

THinkPHP でクライアント IP と IP アドレスのクエリを取得する方法

以上がThinkphp3.2の問題を分析して複数ファイルアップロードと1ファイルのみアップロードの問題を単純に解決の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート