TP框架配合jquery進行3種方式的多圖片上傳

  • 2019 年 10 月 17 日
  • 筆記

用的TP5.1框架+jquery

一 使用form表單方式進行多圖片上傳

html程式碼:

 <form action="../admin/admin/cs" enctype="multipart/form-data" method="post">         <input type="file" name="image[]" /> <br>         <input type="file" name="image[]" /> <br>         <input type="file" name="image[]" /> <br>         <input type="button" value="上傳" id="imgbtn"/>  </form>  

  ../admin/admin/cs的PHP程式碼:


public function cs()
{
// 獲取表單上傳文件
$files = request()->file('image');

$file_path = ENV::get('root_path') . 'public/ab';

!file_exists($file_path) && mkdir($file_path, 0755, true);

foreach($files as $file){

//move後面加個'',代表使用圖片原文件名,不用則生成隨即文件名可
$info = $file->move($file_path, '');

if(!$info) echo $file->getError();
}
}

 

 

二 使用file的多文件上傳屬性進行多圖片上傳

html程式碼:

<input type="file" accept="image/*" multiple="multiple" onchange="upload(this)"/>

 jquery程式碼:

let fd = new FormData();    function upload(_this) {        let filelist = _this.files;        let l = filelist.length;        //循環將文件全部追加到fd中      for(i = 0; i < l; i++) fd.append("image[]", filelist[i]);        $.ajax({          type: "POST",          url: "../admin/admin/cs", //這個PHP程式碼還是上面那個          data: fd,          processData : false,          contentType : false,          success: function(res){              console.log(res);          }      });  }  

  

我選了3個文件,分別是03.jpg     04.jpg      05.jpg

 

 

 

選好之後顯示3個文件,文件夾中也成功添加了3個對應的文件,我幫你們看了下,確實是剛才選擇的那3張圖片

 

 

 

三 利用多個file類型input進行ajax無刷新上傳

html程式碼:

<input type="file" accept="image/*"  onchange="upload(this)"/>  <input type="file" accept="image/*"  onchange="upload(this)"/>  <input type="file" accept="image/*"  onchange="upload(this)"/>  <input type="button" id="btn" value="上傳">

query程式碼:

    let fd = new FormData();        function upload(_this) {       //上面是多個文件,這裡是一個文件,所以在files後面加個[0]          fd.append("image[]", _this.files[0])      };        $('#btn').click(() =>{          $.ajax({              type: "POST",              url: "../admin/admin/cs", //還是之前那個PHP程式碼              data: fd,              processData : false,              contentType : false,              success: function(res){                    console.log(res);              }          });      })  

  

 

 

 

四 這是我在平時項目開發中使用過的,現在進行一個總結,希望能幫到各位