国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 語(yǔ)言 > PHP > 正文

Laravel框架+Blob實(shí)現(xiàn)的多圖上傳功能示例

2024-05-05 00:01:50
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本文實(shí)例講述了Laravel框架+Blob實(shí)現(xiàn)的多圖上傳功能。分享給大家供大家參考,具體如下:

一.介紹

我們知道多圖上傳一般都附帶的又即時(shí)顯示功能,即上傳后可以立刻看到所傳圖片。之前一直用的一個(gè)多圖上傳插件是選擇圖片,點(diǎn)擊上傳然后圖片資源上傳到服務(wù)器,然后返回存儲(chǔ)的路徑信息,最后我們點(diǎn)擊表單的提交按鈕后將這些信息插入數(shù)據(jù)庫(kù)。

現(xiàn)在有一個(gè)尷尬的地方,當(dāng)我點(diǎn)擊上傳圖片后,我又取消這次表單提交了。可是圖片資源已經(jīng)到服務(wù)器了,容易造成空間浪費(fèi)等。

現(xiàn)在提供一個(gè)自己結(jié)合Laravel框架寫(xiě)的多圖上傳,(當(dāng)然,在任何地方都可以直接套用),特點(diǎn)是:圖片上傳后可即時(shí)顯示,但是是通過(guò)blob調(diào)用的瀏覽器緩存圖片信息,當(dāng)表單提交后,圖片資源才會(huì)真正的上傳服務(wù)器與數(shù)據(jù)庫(kù)。

二.前端

注:本例基于Laravel框架

先上Form表單

<form method="post" enctype="multipart/form-data" action="#">  {{csrf_field()}}  <ul class="list_btn">  <li><img id="imgone" class="sz" width="100px" height="100px" src="" style="display: none;"></li>   <li> <input type="file" id="house_img_one1" name="art_thumb" multiple="multiple" onchange="houseImgOne(this)"></li></ul>  <div class="submit">上傳</div></form>

JS代碼

<script>  var _btnId = '';  var all_urls="";  var all_types="";  function houseImgOne(_this) {    var img = '<img class="sz" width="100px" height="100px" src=""  >'    _btnId = $(_this).attr('id');    var obj = document.getElementById("house_img_one1");    var length = obj.files.length;    //多圖上傳時(shí)遍歷文件信息(可以通過(guò)object.files查看)    for (var i = 0; i < length; i++) {      var objUrl = getObjectURL(_this.files[i]);      //圖片后綴類型拼接      all_types=all_types+_this.files[i].type;      //將圖片轉(zhuǎn)換成base64自字符      var oFReader = new FileReader();      oFReader.readAsDataURL(_this.files[i]);      oFReader.onload = function (oFREvent) {        all_urls=all_urls+oFREvent.target.result+"&|||"; //拼接data形式base64的url      };      if (objUrl) {        $('.sz:last').before(img);        $('.sz').eq($(".sz").length - 2).attr("src", objUrl);      }    }  }  //點(diǎn)擊提交按鈕觸發(fā)ajax    $(".submit").click(function(){    //console.log(all_types);    $.ajax({      type:"post",      url:"{{url('admin/img')}}",      data:{'imgs':all_urls,'types':all_types,'_token':"{{csrf_token()}}"},      dataType:"json",      success:function(data){        if (data==1){          // layer插件提示,可自行選擇則          layer.msg("上傳成功", {icon: 6});          window.location.reload();        }else {          alert("上傳失敗!");        }      }    });  });  //獲取blog對(duì)象url(實(shí)際獲取的是緩存中的圖片路徑信息,用于即時(shí)顯示,并非服務(wù)器返回的實(shí)際資源路徑)  function getObjectURL(file) {    var url = null;    if (window.createObjectURL != undefined) {      url = window.createObjectURL(file);    } else if (window.URL != undefined) {      url = window.URL.createObjectURL(file);    } else if (window.webkitURL != undefined) {      url = window.webkitURL.createObjectURL(file);    }    return url;  }</script>

三.后臺(tái)處理代碼

public function store(Request $request){  $data=$request->all();  $imgs = $data['imgs'];  // array_values()用于重置數(shù)組下標(biāo)  $types =array_values(array_filter(explode('image/',$data['types'])));  $arr=array_values(array_filter(explode('&|||',$imgs)));  foreach ($arr as $k => $v){  //文件路徑  $filepath = base_path().'/storage/app/imgs/'.date('YmdHis').$k.'.'.$types[$k];  //提取base64字符  $imgdata = substr($v,strpos($v,",") + 1);  $decodedData = base64_decode($imgdata);  file_put_contents($filepath,$decodedData );  //插入數(shù)據(jù)庫(kù)  $img = new Img;  $filepath = strchr($filepath,'/');  $img->img_path=$filepath;  $img->save();}

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


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到PHP教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 仁布县| 阿瓦提县| 浙江省| 莒南县| 东乡| 澳门| 宣武区| 高雄市| 油尖旺区| 湖口县| 舞钢市| 木里| 延庆县| 崇礼县| 嘉兴市| 周宁县| 鄱阳县| 南昌县| 综艺| 离岛区| 达孜县| 察雅县| 丰都县| 天祝| 宣武区| 静海县| 潍坊市| 泸州市| 元朗区| 岑巩县| 阿瓦提县| 金溪县| 年辖:市辖区| 江阴市| 阿荣旗| 鹿泉市| 邳州市| 建德市| 东阿县| 斗六市| 明溪县|