最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue如何預(yù)覽后端傳來的二進制圖片

 更新時間:2022年06月05日 15:38:07   作者:Dawnchen1  
這篇文章主要介紹了vue如何預(yù)覽后端傳來的二進制圖片,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

vue預(yù)覽后端傳來的二進制圖片

1.新建一個對話框

用來顯示圖片

<el-dialog title="" :visible.sync="imgdialog" ?width="70%">
? <img :src="src" alt=""/>
</el-dialog>

2.下載方法

可以將request替換成axios

download(row) {
? ? ? this.$request({
? ? ? ? url: baseUrl + '/file/download',
? ? ? ? method: 'post',
? ? ? ? data: row,
? ? ? ? responseType: 'arraybuffer' ?//這個響應(yīng)類型必須要寫
? ? ? }).then(res => {
? ? ? ? // console.log(res) ?//二進制文件打印出來是亂碼
? ? ? ? ?this.src = 'data:image/jpeg;base64,' + this.arrayBufferToBase64(res)
? ? ? ? ?this.imgdialog = true
? ? ? }).catch(err => {
? ? ? ? console.log(err)
? ? ? })
? ? },

3.轉(zhuǎn)碼方法

? ? arrayBufferToBase64(buffer) {
? ? ? var binary = ''
? ? ? var bytes = new Uint8Array(buffer)
? ? ? var len = bytes.byteLength
? ? ? for (var i = 0; i < len; i++) {
? ? ? ? binary += String.fromCharCode(bytes[i])
? ? ? }
? ? ? return window.btoa(binary)
? ? }

vue實現(xiàn)文件預(yù)覽功能的前端

預(yù)覽文件的前端

省略點擊按鈕點擊觸發(fā)showdialogview()方法的代碼

第一種方法

先在template中加入一個input框,綁定一個字符串類型的變量

寫showdialogview()方法

調(diào)用后臺的方法,如果返回的不是null(后臺返回的數(shù)據(jù)是一行一行返回的),就使用for循環(huán),添加到變量中去。 

<template>
? <div class="content">
? ? <!--文件預(yù)覽-->
? ? <el-dialog title="數(shù)據(jù)預(yù)覽" :visible.sync="dialogvisibleview" >
? ? ? <el-input type="textarea" :rows="10" placeholder="" v-model="dataview">
? ? ? </el-input>
? ? </el-dialog>
? </div>
</template>
<script>
? import api from '../../api/api'
? import $ from 'jquery';
? import axios from 'axios';
? export default {
? ? name: "DataFile",
? ? inject: ['reload'],
? ? data(){
? ? ? return {
? ? ? ? dialogvisibleview: false, // 文件預(yù)覽
? ? ? ? dataview: ''
? ? ? }
? ? },
? ? methods:{
? ? ? //預(yù)覽文件
? ? ? showdialogview(id) {
? ? ? ? this.dataview ='';
? ? ? ? var dataView = new FormData;
? ? ? ?// var num=20;
? ? ? ? dataView.append("id",id);
? ? ? ? api.getDataDetail(dataView).then((response) => response.json())
? ? ? ? ? .then((data) => {
? ? ? ? ? ? if(data!=null){
? ? ? ? ? ? ? this.dialogvisibleview = !this.dialogvisibleview;
? ? ? ? ? ? ? //alert(data.data[0]);
? ? ? ? ? ? ? for (var i=0;i<=data.data.length-1;i++){
? ? ? ? ? ? ? ? this.dataview+=data.data[i]+"\n";
? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? });
? ? ? }
? ? },
? ? created: function () {
? ? ? console.log('cteated 鉤子執(zhí)行...');
? ? }
? }
</script>

第二種方法

可以在對話框中加入一個table標(biāo)簽,在tbody標(biāo)簽中使用v-html綁定變量,這樣,在字符串中的標(biāo)簽可以展示出來

因為后臺給的接口返回的數(shù)據(jù)是數(shù)組中的一個下標(biāo)對應(yīng)的一行數(shù)據(jù),把每一行的數(shù)據(jù)拆分成字符串?dāng)?shù)組,然后放在單元格中,這樣展示出來比較整齊,還可以添加樣式。

<template>
? <div class="content">
? ? <!--預(yù)覽的模態(tài)框-->
? ? <el-dialog title="文件內(nèi)容預(yù)覽" :visible.sync="previewVisible" modal-append-to-body="false" append-to-body="true" style="height: 100%;"width="80%">
? ? ? <p style="color:red">若可視化,請選擇數(shù)值列</p>
? ? ? <div id="modalContent" style="height: 600px;overflow:scroll;overflow-x:auto;overflow-y:auto ">
? ? ? ? <table id="box-table" style="border-collapse:collapse;height:60px;">
? ? ? ? ? <tbody id="table_body" v-html="datafileView"></tbody></table>
? ? ? </div>
? ? </el-dialog>
? </div>
</template>
<script>
? import api from '../../api/api'
? import $ from 'jquery';
? import axios from 'axios';
? export default {
? ? name: "DataFile",
? ? inject: ['reload'],
? ? data(){
? ? ? return {
? ? ? ? ?previewVisible:false, ?// 預(yù)覽模態(tài)框的
? ? ? ? ?datafileView:'', // 預(yù)覽的表格
? ? ? }
? ? },
? ? methods:{
? ? ? // 打開預(yù)覽的模態(tài)框
? ? ? openPreview (id){
? ? ? ? this.previewVisible = true;
? ? ? ? this.viewData(id);
? ? ? },
? ? ? // 在后臺查詢預(yù)覽
? ? ? viewData (fid) {
? ? ? ? this.datafileView="";
? ? ? ? var dataView = new FormData;
? ? ? ? dataView.append("id",fid);
? ? ? ? api.getDataDetail(dataView).then((response) => response.json())
? ? ? ? ? .then((data) => {
? ? ? ? ? ? var viewDataString="<tr>";
? ? ? ? ? ? var dataArray = ((String)(data.data[0])).split(",");
? ? ? ? ? ? for(var i =0;i<dataArray.length;i++){
? ? ? ? ? ? ? viewDataString=viewDataString+"<td style='text-align:center;width:10%'><input type='radio' name='tableheader' value='"+i+"' @click='f1()' /></td>";
? ? ? ? ? ? }
? ? ? ? ? ? viewDataString = viewDataString+"</tr><tr style='border-color:#1eb8f7;border-bottom-style:solid;border-width:1px'>";
? ? ? ? ? ? for(var i =0;i<dataArray.length;i++){
? ? ? ? ? ? ? viewDataString = viewDataString+"<th style='text-align:center;width:10%'>"+dataArray[i]+"</th>";
? ? ? ? ? ? }
? ? ? ? ? ? viewDataString = viewDataString+"</tr>";
? ? ? ? ? ? console.log(data.data.length);
? ? ? ? ? ? for(var x=1;x<data.data.length;x++){
? ? ? ? ? ? ? var dataArray = ((String)(data.data[x])).split(",");
? ? ? ? ? ? ? viewDataString = viewDataString+"<tr>";
? ? ? ? ? ? ? for(var i =0;i<dataArray.length;i++){
? ? ? ? ? ? ? ? viewDataString = viewDataString+"<td style='text-align:center;width:15%'>"+dataArray[i]+"</td>";
? ? ? ? ? ? ? }
? ? ? ? ? ? ? viewDataString = viewDataString+"</tr>";
? ? ? ? ? ? }
? ? ? ? ? ? this.datafileView =viewDataString;
? ? ? ? ? ? console.log(this.datafileView );
? ? ? ? ? });
? ? ? }
? ? },
? ? created: function () {
? ? ? console.log('cteated 鉤子執(zhí)行...');
? ? }
? }
</script>

缺點:使用v-html,即使標(biāo)簽在瀏覽器中展示出來,但是里面的方法不可以使用,里面的方法失效。 

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。 

相關(guān)文章

  • Vue概念及常見命令介紹(1)

    Vue概念及常見命令介紹(1)

    這篇文章主要為大家詳細介紹了Vue概念及常見命令,介紹了vue.js聲明式渲染、雙向綁定及常用指令,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • Vue項目中如何引入icon圖標(biāo)

    Vue項目中如何引入icon圖標(biāo)

    這篇文章主要介紹了Vue如何引入icon圖標(biāo),本文通過圖文并茂的形式給大家介紹的非常詳細,需要的朋友可以參考下
    2018-03-03
  • 尤大大新活petite-vue的實現(xiàn)

    尤大大新活petite-vue的實現(xiàn)

    打開尤大大的GitHub,發(fā)現(xiàn)多了個叫 petite-vue 的東西,Vue3 和 Vite 還沒學(xué)完呢,又開始整新東西了?本文就來介紹一下
    2021-07-07
  • vue3?reactive數(shù)據(jù)更新視圖不更新問題解決

    vue3?reactive數(shù)據(jù)更新視圖不更新問題解決

    這篇文章主要為大家介紹了vue3?reactive數(shù)據(jù)更新視圖不更新問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • Vue引入highCharts實現(xiàn)數(shù)據(jù)可視化

    Vue引入highCharts實現(xiàn)數(shù)據(jù)可視化

    這篇文章主要為大家詳細介紹了Vue引入highCharts實現(xiàn)數(shù)據(jù)可視化,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • el-menu實現(xiàn)橫向溢出截取的示例代碼

    el-menu實現(xiàn)橫向溢出截取的示例代碼

    在進行vue開發(fā)的時候,我們不可避免會使用到導(dǎo)航菜單,element方便的為我們提供了導(dǎo)航菜單組件,下面這篇文章主要給大家介紹了關(guān)于el-menu實現(xiàn)橫向溢出截取的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • vue中使用element-ui進行表單驗證的實例代碼

    vue中使用element-ui進行表單驗證的實例代碼

    這篇文章主要介紹了vue中使用element-ui進行表單驗證的實例代碼,本文給大家分享實現(xiàn)思路,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-06-06
  • 教你在vue項目中使用svg圖標(biāo)的方法

    教你在vue項目中使用svg圖標(biāo)的方法

    本文給大家介紹了在vue項目中使用svg圖標(biāo)的方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2022-04-04
  • vue項目中使用ts(typescript)入門教程

    vue項目中使用ts(typescript)入門教程

    最近項目需要將原vue項目結(jié)合ts的使用進行改造,本文從安裝到vue組件編寫進行了說明,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Vue2+JS實現(xiàn)掃雷小游戲

    Vue2+JS實現(xiàn)掃雷小游戲

    實現(xiàn)小游戲可以鍛煉自己的邏輯思維能力,也不會很枯燥,完成時會給自己帶來一種滿足感。本文就將利用Vue和JS實現(xiàn)簡單的掃雷小游戲,需要的可以參考一下
    2022-06-06

最新評論

石柱| 永川市| 山西省| 九寨沟县| 耒阳市| 潮州市| 台南县| 兰西县| 苏尼特左旗| 台南市| 平阳县| 彭阳县| 杭锦旗| 囊谦县| 彭阳县| 三亚市| 内丘县| 栖霞市| 林西县| 鹤庆县| 利辛县| 玛多县| 盈江县| 句容市| 岗巴县| 馆陶县| 江口县| 凌源市| 湘阴县| 尖扎县| 松潘县| 清河县| 铜鼓县| 赤水市| 健康| 周宁县| 武清区| 偃师市| 海门市| 宜都市| 巴马|