html的data url和blob url
创始人
2025-07-15 09:37:17
0

data url

data url的语法为:

data:[<mediatype>][;base64],<data>

说明:

(1)mediatype:设置内容类型,缺省为text/plain;charset=US-ASCII

(2)对于一些“小”的数据,可以使用data url在网页中直接嵌入,而不是从外部文件载入。

适用于html的img、iframe、link、script、css的background-image。

例如:

data:text/plain;charset=utf-8,你好,中文!

data:text/plain;charset=utf-8;base64,5L2g5aW977yM5Lit5paH77yB

data:text/html;charset=utf-8,

data:text/html;charset=utf-8;base64,

data:text/css;charset=utf-8,

data:text/css;charset=utf-8;base64,

data:text/javascript;charset=utf-8,

data:text/javascript;charset=utf-8;base64,

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHVK...

(3)动态生成data url(读取本地文件生成data url)

<div id="c"></div>

<form>

<input type="file" name="file1" id="file1">

</form>

<script>

let file1=document.getElementById("file1");

file1.addEventListener("change",function(){

        file2=file1.files[0]

        if(file2){

                let fr=new FileReader()

                fr.readAsDataURL(file2)

                fr.onload=function(){

                        let img=document.createElement("img")

                        img.setAttribute("src",this.result)  //还可以使用fr.result

                        document.getElementById("c").appendChild(img);

                }

        }

})

</script>



blob url

blob:不可变,原始数据的类文件对象。

blob url只能通过动态生成,形如blob:http://,适用于html的img、iframe、link、script、audio、video等。


创建blob对象的语法为:

var blob=new Blob(array,options);

说明:

(1)array为设置数据。

(2)options为设置参数,主要有:

type:设置内容类型,取值有text/plain、text/html、text/css、text/javascript等,缺省为""。

例如:

var blob=new Blob(["<script>alert('hello world!')</script>"],{"type":"text/html"});


创建blob url的语法为:

var url=URL.createObjectURL(blob对象|文件对象);


读取本地文件生成blob url

<div id="c"></div>

<form>

<input type="file" name="file1" id="file1">

</form>

<script>

let file1=document.getElementById("file1")

file1.addEventListener("change",function(){

        let file2=file1.files[0]

        if(file2){

                let img=document.createElement("img")

                img.setAttribute("src",URL.createObjectURL(file2))

                document.getElementById("c").appendChild(img)

        }

})

</script>

<div id="c"></div>

<form>

<input type="file" name="file1" id="file1">

</form>

<script>

let file1=document.getElementById("file1")

file1.addEventListener("change",function(){

        let file2=file1.files[0]

        if(file2){

                let fr=new FileReader()

                fr.readAsArrayBuffer(file2)

                fr.onload=function(){

                        let img=document.createElement("img")

                        img.setAttribute("src",URL.createObjectURL(new Blob([fr.result])))

                        document.getElementById("c").appendChild(img)

                }                

        }

})

</script>

读取远程文件生成blob url(fetch)

<div id="c"></div>

<script>

_window.onload=function(){

        fetch("./images/m11.png").then(response=>{

                if(response.ok){

                        response.blob().then(blob=>{

                                let img=document.createElement("img")

                                img.setAttribute("src",URL.createObjectURL(blob))

                                document.getElementById("c").appendChild(img)

                        })

                }

        })

}

</script>


读取远程文件生成blob url(ajax)

<div id="c"></div>

<script>

_window.onload=function(){

        let xhr=new XMLHttpRequest()

        xhr.responseType="blob"

        xhr.onreadystatechange=function(){

                if(xhr.readyState==4&&xhr.status==200){

                        let img=document.createElement("img")

                        img.src=URL.createObjectURL(xhr.response)

                        document.getElementById("c").appendChild(img)

                }

        }

        xhr.open("get","./images/m11.png",true)

        xhr.send()

}

</script>

相关内容

热门资讯

修复:npm : 无法加载文件... 这个错误是由于 PowerShell 的执行策略限制导致的。在某些系统上,默认情况下,PowerSh...
弹性布局 布局的传统解决方案,基于盒状模型,依赖display属性+position属性+float属性。20...
html的data url和b... data urldata url的语法为:data:[][;base64],说明:(1)mediat...
fetch方式发送请求 1、以get方式发送查询字符串fetch("server.php?查询字符串"[,{method:"...
css实现强制不换行/自动换行... 强制不换行white-space:nowrap;自动换行word-wrap: break-word;...
自定义复选框样式 input[type="checkbox"] {appearance:none;-webkit-ap...
php的安装与配置 一、linux(centos)1、nginx的安装与配置新建文件/etc/yum.repos.d/n...
css实现内容裁剪 1、实现单行内容裁剪,后跟省略号overflow:hidden;text-overflow:elli...
关于css的text-inde... p{text-indent: 2em; /*em是相对单位,2em即现在一个字大小的两倍*/}可加了...
js设置html属性和CSS属... js设置html属性:(1)添加属性对象名.属性名=值对象名.setAttribute("属性名",...