校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁(yè) > 知識(shí)庫(kù) > thinkphp5 框架結(jié)合plupload實(shí)現(xiàn)圖片批量上傳功能示例

thinkphp5 框架結(jié)合plupload實(shí)現(xiàn)圖片批量上傳功能示例

熱門標(biāo)簽:南京3D地圖標(biāo)注 重慶外呼電銷系統(tǒng)多少錢 正規(guī)電銷機(jī)器人系統(tǒng) 邢臺(tái)400電話辦理 辦理400電話哪家好點(diǎn) 濟(jì)源百應(yīng)電銷機(jī)器人聯(lián)系方式 南寧電話外呼系統(tǒng)線路 嘟嘟云外呼系統(tǒng) 咸陽(yáng)電銷

本文實(shí)例講述了thinkphp5 框架結(jié)合plupload實(shí)現(xiàn)圖片批量上傳功能。分享給大家供大家參考,具體如下:

在extend目錄下新增目錄uploader,并新建類Uploads

?php
namespace uploader;
 
class Uploads {
 public static function upfile($file, $path = 'images', $add_domain = false) {
  $res = ['errno' => 1, 'errmsg' => '上傳圖片錯(cuò)誤'];
  $data = '';
  if(!empty($file)) {
   // 上傳根目錄
   $file_path = 'uploads/';
   // 如果傳了路徑過(guò)來(lái),則加入路徑
   if(!empty($path)) {
    $file_path .= $path .'/';
   }
   if (!file_exists($file_path)) {
    @mkdir($file_path);
   }
   // 上傳
   $info = $file->move($file_path);
   // 獲取后綴
   $ext = strtolower($info->getExtension());
   //判斷后綴是否合法
   $exts = ['jpg', 'png', 'gif', 'jpeg', 'mp4', 'avi', '3gp'];
   if(in_array($ext, $exts)) {
    $save_name = $info->getSaveName();
    $save_path = "/" . $file_path . $save_name;
    if($add_domain) {
     $save_path = "http://www.localhost.com/" . $file_path . $save_name;
    } 
    $res = ['errno' => 0, 'data' => $save_path];
   } else {
    $res = ['errno' => 1, 'errmsg' => $ext];
   }
  } else {
   $res = ['errno' => 1, 'errmsg' => '請(qǐng)選擇圖片!'];
  }
  
  return $res;
 }
}
?>

使用

?php
 
namespace app\backend\controller;
 
use think\Controller;
use think\Request;
use uploader\Uploads;
 
class Upload extends Controller
{
 public function upload(Request $request) {
  $files = $request->file("file");
  $updir = $request->post('updir');
  $res = Uploads::upfile($files, $updir);
  return json_encode($res);
 }
 
 public function del_upload(Request $request) {
  $res = ['errno' => 1, 'errmsg' => '刪除失敗'];
  $filename = $request->post('filename');
  if(!empty($filename)) {
   @unlink($_SERVER['DOCUMENT_ROOT'] . $filename);
   $res = ['errno' => 0, 'errmsg' => $filename];
  }
  return json_encode($res);
 }
 
}
 
?>

前端js

var image_files = new Array(); // 多圖片上傳臨時(shí)保存
$(document).ready(function() {
 $('.media-picker').each(function() {
  var el = $(this);
  var elbtn = el.find('.media-picker-button');
  var multi_selection = false;
  var inputField = el.find('input[type=hidden]');
  // 是否多文件上傳
  if(elbtn.attr('data-multiple') == 'multiple') {
   multi_selection = true;
  }
  // 上傳目錄
  var upload_path = inputField.attr('upload-path');
  var uploader = new plupload.Uploader({
   runtimes : 'html5,flash,silverlight,html4',
   browse_button : elbtn.attr('data-id') + '_uploader', 
   multi_selection: multi_selection,
   auto_start: true,
   flash_swf_url : '../plugins/plupload/js/Moxie.swf',
   silverlight_xap_url : '../plugins/plupload/js/Moxie.xap',
   url : '/backend/upload',
   
   filters: {
    mime_types : [ //只允許上傳圖片和zip,rar文件
    { title : "Image files", extensions : "jpg,jpeg,gif,png,bmp" }, 
    { title : "Video files", extensions : "mp4,3gp" }
    ],
    max_file_size : '10mb', //最大只能上傳10mb的文件
    prevent_duplicates : false //不允許選取重復(fù)文件
   },
 
   init: { 
    PostInit: function() {},
 
    BeforeUpload: function(up, file) {
     up.setOption('multipart_params', {'updir': upload_path})
    },
 
    FilesAdded: function(up) {
     up.start(); //選擇完后直接上傳
    },
 
    FileUploaded: function(up, file, info) {
     if (info.status == 200)
     {
      var file_type = file.type;
      var is_image = file_type.indexOf('image');
      var is_video = file_type.indexOf('video');
      // 解析返回的數(shù)據(jù)
      var result = JSON.parse(info.response);
      var img_list = "";
      if(result.errno == 0) {
       // 返回的圖片上傳結(jié)果
       var file_name = result.data; 
       if(multi_selection) {
        // 多圖片上傳不考慮視頻
        if (is_image > -1) {
         // 存入臨時(shí)數(shù)組
         image_files.push(file_name);
         inputField.val(JSON.stringify(image_files));
         for (var i = 0; i  image_files.length; i++) {
          img_list += "li>img src='"+image_files[i]+"' />span class='delete-image'>✖/span>p>"+image_files[i]+"/p>/li>";
         }
        }
       } else {
        inputField.val(file_name);
        if (is_image > -1) {
         img_list = "li>img src='"+result.data+"' />span class='delete-image'>✖/span>p>"+result.data+"/p>/li>";
        }
        if (is_video > -1) { 
         img_list = "li>video controls src='"+result.data+"'>/video>span class='delete-image'>✖/span>p>"+result.data+"p>/li>";
        }
       }
       el.find('.image-list').html(img_list);
      } else {
       alert(result.errmsg);
      }
     }
     else
     {
      alter(info.response);
     } 
    },
 
    Error: function(up, err) {
     alert(err.response);
    }
   }
  })
  uploader.init();
 
 
  // 刪除
  if (multi_selection) {
   el.on('click', '.delete-image', function() {
    var file_name = inputField.val();
    var elDel = $(this);
    // 得到filename
    var current_file_name = elDel.next('p').html();
    // 刪除當(dāng)前的父級(jí)li
    elDel.parent().remove();
    // 重新賦值數(shù)組
    var new_image_files = new Array();
    if (image_files != '') {
     new_image_files = image_files;
    } else {
     new_image_files = $.parseJSON(file_name);
    }
    // 去掉數(shù)組中的當(dāng)前值
    for(var i in new_image_files) {
     if(new_image_files[i] == current_file_name) {
      new_image_files.splice(i,1);
      break;
     }
    }
    $.ajax({
      type: "POST",
      url: "/backend/del_upload",
      data: "filename=" + current_file_name,
      success: function(msg) {
        console.log(msg)
      }
    });
    inputField.val(JSON.stringify(new_image_files));
   });
  } else {
   el.on('click', '.delete-image', function(){
    // 顯示值為空
    var file_name = inputField.val();
    el.find('.image-list').html('');
    inputField.val('');
    $.ajax({
     type: "POST",
     url: "/backend/del_upload",
     data: "filename=" + file_name,
     success: function(msg) {
       console.log(msg)
     }
    });
   });
  }
 })
})

更多關(guān)于thinkPHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《ThinkPHP入門教程》、《thinkPHP模板操作技巧總結(jié)》、《ThinkPHP常用方法總結(jié)》、《codeigniter入門教程》、《CI(CodeIgniter)框架進(jìn)階教程》、《Zend FrameWork框架入門教程》及《PHP模板技術(shù)總結(jié)》。

希望本文所述對(duì)大家基于ThinkPHP框架的PHP程序設(shè)計(jì)有所幫助。

您可能感興趣的文章:
  • Spring-boot結(jié)合Shrio實(shí)現(xiàn)JWT的方法
  • JAVA集合框架Map特性及實(shí)例解析
  • TP5框架實(shí)現(xiàn)一次選擇多張圖片并預(yù)覽的方法示例
  • yii框架結(jié)合charjs統(tǒng)計(jì)上一年與當(dāng)前年數(shù)據(jù)的方法示例
  • yii框架結(jié)合charjs實(shí)現(xiàn)統(tǒng)計(jì)30天數(shù)據(jù)的方法
  • TP5框架實(shí)現(xiàn)上傳多張圖片的方法分析
  • Apache Shrio安全框架實(shí)現(xiàn)原理及實(shí)例詳解

標(biāo)簽:平頂山 河南 隴南 唐山 武漢 通遼 黃山 南通

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《thinkphp5 框架結(jié)合plupload實(shí)現(xiàn)圖片批量上傳功能示例》,本文關(guān)鍵詞  thinkphp5,框架,結(jié)合,plupload,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《thinkphp5 框架結(jié)合plupload實(shí)現(xiàn)圖片批量上傳功能示例》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于thinkphp5 框架結(jié)合plupload實(shí)現(xiàn)圖片批量上傳功能示例的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    欧美精品一区二区三区四区| 99精品欧美一区| 91精品国产品国语在线不卡| 亚洲午夜免费福利视频| 欧美无乱码久久久免费午夜一区| 香蕉成人伊视频在线观看| 欧美精品三级日韩久久| 美女视频黄 久久| 精品国产免费一区二区三区香蕉| 国产毛片精品视频| 亚洲免费毛片网站| 欧美日韩免费不卡视频一区二区三区| 日韩av中文在线观看| 久久久久9999亚洲精品| eeuss鲁片一区二区三区| 亚洲综合色丁香婷婷六月图片| 欧美人体做爰大胆视频| 国产精品一区二区在线看| 国产精品青草久久| 在线亚洲一区观看| 久久91精品久久久久久秒播| 国产精品毛片久久久久久久| 欧美三级在线视频| 国产伦精品一区二区三区视频青涩 | 精品久久久久久无| 成人妖精视频yjsp地址| 一级做a爱片久久| 欧美va在线播放| 日本精品一区二区三区四区的功能| 日韩av在线免费观看不卡| 欧美经典三级视频一区二区三区| 欧美最猛性xxxxx直播| 精品伊人久久久久7777人| 国产精品日日摸夜夜摸av| 欧美这里有精品| 韩国视频一区二区| 亚洲一区视频在线| 国产三级久久久| 欧美电影一区二区| 91在线观看下载| 韩国av一区二区三区在线观看| 亚洲黄一区二区三区| 精品国产91久久久久久久妲己| a4yy欧美一区二区三区| 国产在线精品一区二区不卡了| 亚洲综合成人在线视频| 国产欧美日韩麻豆91| 日韩一级精品视频在线观看| 欧洲一区在线电影| caoporn国产精品| 国产伦理精品不卡| 秋霞av亚洲一区二区三| 亚洲乱码国产乱码精品精的特点| 精品成人佐山爱一区二区| 欧美色视频在线观看| av在线播放成人| 成人性生交大片免费看中文| 久久国产精品区| 日韩国产一区二| 亚洲成人黄色小说| 亚洲综合网站在线观看| 亚洲日穴在线视频| 综合自拍亚洲综合图不卡区| 国产日韩欧美精品电影三级在线| 日韩免费成人网| 91精品国产91久久久久久最新毛片 | 亚洲国产一区在线观看| 亚洲欧美日韩人成在线播放| 国产精品福利影院| 日本一区二区视频在线| 久久精品人人做人人综合| 精品国产污网站| 2022国产精品视频| 久久色.com| 久久精品一区二区| 国产欧美精品区一区二区三区| 久久人人超碰精品| 欧美经典三级视频一区二区三区| 国产天堂亚洲国产碰碰| 国产精品私人自拍| 国产精品免费久久| 亚洲女同一区二区| 亚洲激情综合网| 曰韩精品一区二区| 午夜激情综合网| 免费人成黄页网站在线一区二区| 看电影不卡的网站| 国产一区二区三区免费在线观看| 国产在线精品一区二区夜色| 福利一区在线观看| 99精品国产一区二区三区不卡| 一本久久a久久免费精品不卡| 欧美亚洲动漫另类| 日韩三级视频在线看| 国产午夜精品美女毛片视频| 日韩理论片一区二区| 午夜视频在线观看一区二区三区| 麻豆成人久久精品二区三区小说| 国产在线国偷精品免费看| va亚洲va日韩不卡在线观看| 欧洲精品一区二区三区在线观看| 欧美疯狂性受xxxxx喷水图片| 亚洲精品在线网站| 中文字幕五月欧美| 亚洲国产视频直播| 国产一区二三区| 一本色道久久综合狠狠躁的推荐| 欧美精品 日韩| 国产欧美一区二区精品性色| 亚洲一区二区三区爽爽爽爽爽| 麻豆成人综合网| 一本色道久久综合亚洲精品按摩| 91精品在线免费观看| 国产色一区二区| 亚洲国产三级在线| 国产麻豆精品在线| 欧美色视频在线观看| 国产性做久久久久久| 亚洲bdsm女犯bdsm网站| 国产精品伊人色| 欧美妇女性影城| 亚洲色图视频网站| 久久精品国产亚洲aⅴ| 色激情天天射综合网| 久久久久亚洲蜜桃| 亚洲一区二区三区视频在线播放| 国产大陆精品国产| 91精品午夜视频| 亚洲卡通欧美制服中文| 国产精品99久久久久久久女警| 欧美少妇bbb| 国产精品看片你懂得| 久久精品噜噜噜成人88aⅴ| 色哟哟国产精品| 国产精品久久久久毛片软件| 老司机精品视频导航| 欧美在线一二三四区| 国产精品久久久久永久免费观看 | 久久毛片高清国产| 亚洲成a人片综合在线| 99精品视频免费在线观看| 欧美草草影院在线视频| 性感美女久久精品| 色综合激情久久| 国产精品三级av| 国产成人免费在线观看不卡| 日韩一区二区三区在线视频| 亚洲国产精品综合小说图片区| av电影一区二区| 亚洲国产精华液网站w| 国产美女av一区二区三区| 日韩欧美一区二区在线视频| 天堂蜜桃一区二区三区| 欧美日韩中文字幕精品| 亚洲欧美日韩国产手机在线 | 国产99久久久久| 久久亚洲综合色一区二区三区 | 国产资源在线一区| 日韩久久久久久| 蜜桃精品视频在线观看| 在线综合+亚洲+欧美中文字幕| 亚洲第一激情av| 91国偷自产一区二区开放时间| ●精品国产综合乱码久久久久| 成人av影院在线| 国产亚洲短视频| 成人精品gif动图一区| 欧美国产激情二区三区| 成人av网址在线观看| 日本一区二区三级电影在线观看| 国产成人8x视频一区二区| 国产精品人成在线观看免费 | 国产精品亚洲综合一区在线观看| 久久综合色之久久综合| 国产成人午夜视频| 国产欧美一区二区精品秋霞影院| 成人视屏免费看| 亚洲欧美另类图片小说| 欧美性猛交xxxx黑人交| 午夜精品久久久久久久99樱桃| 欧美老肥妇做.爰bbww| 日本亚洲最大的色成网站www| 精品欧美一区二区三区精品久久| 久久不见久久见免费视频1| 久久久久久亚洲综合| 99精品国产热久久91蜜凸| 亚洲国产成人av好男人在线观看| 欧美日韩成人高清| 九色综合狠狠综合久久| 欧美国产日韩在线观看| 91麻豆精品视频| 丝袜诱惑亚洲看片 | 中日韩av电影| 色婷婷av一区二区| 水野朝阳av一区二区三区| 精品免费日韩av| 成人国产精品免费网站| 亚洲成av人影院| 久久久亚洲欧洲日产国码αv| 色8久久人人97超碰香蕉987|