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

vue 圖片轉(zhuǎn)base64本地路徑跨域方式

 更新時(shí)間:2022年02月09日 11:10:20   作者:絮落錦鄉(xiāng)  
這篇文章主要介紹了vue 圖片轉(zhuǎn)base64本地路徑跨域方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

圖片轉(zhuǎn)base64本地路徑跨域

問題描述

代碼

getUrlBase64(url, ext, callback) {
                    var canvas = document.createElement("canvas");   //創(chuàng)建canvas DOM元素
                var ctx = canvas.getContext("2d");
                var img = new Image;
                img.crossOrigin = 'Anonymous';//外網(wǎng)訪問必須加否則會(huì)報(bào)錯(cuò)
                img.src = url;
                img.onload = function () {
                    canvas.height = 140; //指定畫板的高度,自定義
                    canvas.width = 120; //指定畫板的寬度,自定義
                    ctx.drawImage(img, 0, 0, 140, 120); //參數(shù)可自定義 高度,寬度
                    var dataURL = canvas.toDataURL("image/" + ext);
                    callback.call(this, dataURL); //回掉函數(shù)獲取Base64編碼
                    canvas = null;
                }; 
            },

解決方案

1、采用nginx 進(jìn)行監(jiān)聽端口進(jìn)行轉(zhuǎn)發(fā)

resPre:'http://localhost:8083/fileApi'
server{
?? ??? ?listen ? ? ? 8083;
? ? ? ? server_name ?localhost 192.168.0.13;
?? ??? ?root ? "路徑";
?? ??? ?# 該字段是必須的。它的值要么是請(qǐng)求時(shí)Origin字段的值,要么是一個(gè)*,表示接受任意域名的請(qǐng)求。
?? ??? ?add_header 'Access-Control-Allow-Origin' '*';
?? ??? ?# 該字段可選。它的值是一個(gè)布爾值,表示是否允許發(fā)送Cookie。
?? ??? ?# ?默認(rèn)情況下,Cookie不包括在CORS請(qǐng)求之中。設(shè)為true,即表示服務(wù)器明確許可,
?? ??? ?# ?Cookie可以包含在請(qǐng)求中,一起發(fā)給服務(wù)器。這個(gè)值也只能設(shè)為true,
?? ??? ?# ?如果服務(wù)器不要瀏覽器發(fā)送Cookie,刪除該字段即可
?? ??? ?add_header 'Access-Control-Allow-Credentials' 'true';
?? ??? ?# 該字段是必須的,用來(lái)列出瀏覽器的CORS請(qǐng)求會(huì)用到哪些HTTP方法,上例是PUT。
?? ??? ?add_header 'Access-Control-Allow-Methods' '*';
?
?? ??? ?#end 允許指定域名跨域訪問,根據(jù)自己情況修改
?? ??? ?#ssl配置省略
? ? ? ? ?location / {
? ? ? ? ? ? rewrite ?^.+fileApi/?(.*)$ /$1 break;//fileApi 前綴
? ? ? ? ? ? proxy_pass ?http://localhost:8085; ? ?#node api server 即需要代理的IP地址
? ? ? ? ? ? proxy_redirect off;
? ? ? ? ? ? proxy_set_header Host $host;
? ? ? ? ? ? proxy_set_header X-Real-IP $remote_addr;
? ? ? ? ? ? proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
? ? ? ? ?}?? ??? ?
?? ?}

2、把圖片放在項(xiàng)目目錄下面,也就是同一個(gè)地址下面。 

圖片轉(zhuǎn)成base64跨域等安全限制及解決

把其他域的圖片在canvas中轉(zhuǎn)換為base64時(shí),會(huì)遇到跨域安全限制。

目前,唯一可行的方案是,把圖片文件以arraybuffer的形式ajax下載下來(lái),然后直接轉(zhuǎn)base4。

但是,這樣有個(gè)毛病,就是可能會(huì)浪費(fèi)帶寬,多下載一次。

/*    var getBase64ByUrl = function(src, callback, outputFormat) {
        var canvas = document.createElement('canvas'),
            ctx = canvas.getContext('2d'),
            img = new Image;
        img.crossOrigin = 'Anonymous';
        img.onload = function() {
            canvas.height = img.height;
            canvas.width = img.width;
            ctx.drawImage(img, 0, 0); //默認(rèn)圖片文件的原始size 縮小base串需加第4、5個(gè)參數(shù)
            alert(5)
            try{
var dataURL = canvas.toDataURL(outputFormat || 'image/png');
            } catch(e) { alert(e.name + ": " + e.message);
                alert(JSON.stringify(e));
            }
            dataURL =dataURL.replace("data:image/png;base64,", "");
            //dataURL =encodeURIComponent(dataURL);
            alert(dataURL);
            callback(dataURL);
            canvas = null;
        };
        img.src = src;alert(6.5)
    }*/
var getBase64ByUrl = function(src, callback, outputFormat) {
      var xhr = new XMLHttpRequest();
      xhr.open('GET', src, true);
      xhr.responseType = 'arraybuffer';
      xhr.onload = function(e) {
        if (xhr.status == 200) {
          var uInt8Array = new Uint8Array(xhr.response);
          var i = uInt8Array.length;
          var binaryString = new Array(i);
          while (i--) {
            binaryString[i] = String.fromCharCode(uInt8Array[i]);
          }
          var data = binaryString.join('');
          var base64 = window.btoa(data);
          var dataUrl = "data:" + (outputFormat || "image/png") + ";base64," + base64;
          alert(dataUrl)
          callback.call(this, dataUrl);
        }
      };
      xhr.send();
    }

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

相關(guān)文章

  • Vue中動(dòng)態(tài)添加ref的方法詳解

    Vue中動(dòng)態(tài)添加ref的方法詳解

    在Vue.js項(xiàng)目中,ref是一個(gè)非常有用的功能,它可以用來(lái)獲取DOM元素或子組件的實(shí)例引用,通過ref,我們可以在父組件中直接操作子組件的方法和屬性,或者對(duì)DOM元素進(jìn)行直接操作,本文將詳細(xì)介紹如何在Vue中動(dòng)態(tài)添加ref,并通過多個(gè)具體的代碼示例來(lái)幫助讀者理解其實(shí)現(xiàn)過程
    2024-10-10
  • 對(duì)vue下點(diǎn)擊事件傳參和不傳參的區(qū)別詳解

    對(duì)vue下點(diǎn)擊事件傳參和不傳參的區(qū)別詳解

    今天小編就為大家分享一篇對(duì)vue下點(diǎn)擊事件傳參和不傳參的區(qū)別詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2018-09-09
  • vue iview實(shí)現(xiàn)動(dòng)態(tài)新增和刪除

    vue iview實(shí)現(xiàn)動(dòng)態(tài)新增和刪除

    這篇文章主要為大家詳細(xì)介紹了vue iview實(shí)現(xiàn)動(dòng)態(tài)新增和刪除,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • Vue.js如何獲取data-*的值

    Vue.js如何獲取data-*的值

    這篇文章主要介紹了Vue.js如何獲取data-*的值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • vue2.0 watch里面的 deep和immediate用法說(shuō)明

    vue2.0 watch里面的 deep和immediate用法說(shuō)明

    這篇文章主要介紹了vue2.0 watch里面的 deep和immediate用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2020-10-10
  • webstorm添加*.vue文件支持

    webstorm添加*.vue文件支持

    這篇文章主要介紹了webstorm添加*.vue文件支持,webstorm很多的插件內(nèi)置,不用安裝插件,下面嘗試用vue和es6做項(xiàng)目,有興趣的可以了解一下
    2018-05-05
  • Vue3在jsx下父子組件實(shí)現(xiàn)使用插槽方式

    Vue3在jsx下父子組件實(shí)現(xiàn)使用插槽方式

    這篇文章主要介紹了Vue3在jsx下父子組件實(shí)現(xiàn)使用插槽方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • vue+elementui 實(shí)現(xiàn)新增和修改共用一個(gè)彈框的完整代碼

    vue+elementui 實(shí)現(xiàn)新增和修改共用一個(gè)彈框的完整代碼

    Element-Ul是餓了么前端團(tuán)隊(duì)推出的一款基于Vue.js 2.0 的桌面端UI框架,手機(jī)端有對(duì)應(yīng)框架是Mint UI ,今天給大家普及vue+elementui 實(shí)現(xiàn)新增和修改共用一個(gè)彈框的完整代碼,一起看看吧
    2021-06-06
  • 一起來(lái)看看Vue的核心原理剖析

    一起來(lái)看看Vue的核心原理剖析

    這篇文章主要為大家詳細(xì)介紹了Vue的核心原理,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03
  • 在vue項(xiàng)目如何使用base64加密

    在vue項(xiàng)目如何使用base64加密

    這篇文章主要介紹了在vue項(xiàng)目如何使用base64加密,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06

最新評(píng)論

蒙山县| 扶沟县| 托里县| 肇东市| 淅川县| 丹寨县| 江油市| 济宁市| 巴林右旗| 杭锦后旗| 平凉市| 贺州市| 甘孜县| 闽清县| 山阳县| 铅山县| 江城| 忻城县| 旌德县| 青海省| 通州区| 九龙坡区| 阜新市| 仁化县| 花莲县| 宝丰县| 扎赉特旗| 珠海市| 盐池县| 正蓝旗| 紫金县| 治多县| 保定市| 应城市| 措美县| 宁武县| 宜黄县| 湘乡市| 赞皇县| 巴林左旗| 全椒县|