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

nodejs如何讀取文件二進(jìn)制 前端響應(yīng)blob或base64顯示圖片

 更新時(shí)間:2022年08月03日 14:08:18   作者:堅(jiān)持學(xué)習(xí)前端日記  
這篇文章主要介紹了nodejs如何讀取文件二進(jìn)制 前端響應(yīng)blob或base64顯示圖片方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

讀取文件二進(jìn)制 前端響應(yīng)blob或base64顯示圖片

express 框架 nodejs

var express = require('express')
var app = express();
var fs = require('fs')
var http = require('http').createServer(app);
app.get('/send',async (req, res) => {
? res.setHeader('Access-Control-Allow-Origin','*');
? function read () {
? ? return new Promise((resolve, rejects) => {
? ? ? fs.readFile('./public/2020.jpg',function(err, data) {
? ? ? ? resolve(data)
? ? ? ? rejects(err)
? ? ? })
? ? })
? }
? let data = await ?read()
? res.send(data)
})
http.listen(3000, () => {
? console.log('listening on *:3000');
});app.get('/send',async (req, res) => {
? res.setHeader('Access-Control-Allow-Origin','*');
? function read () {
? ? return new Promise((resolve, rejects) => {
? ? ? fs.readFile('./public/2020.jpg',function(err, data) {
? ? ? // 可以更換不同文件 圖片 或者 文檔 等等 前端接受的時(shí)候 對(duì)應(yīng)就ok
? ? ? ? resolve(data)
? ? ? ? rejects(err)
? ? ? })
? ? })
? }
? let data = await ?read()
? res.send(data)
})
http.listen(3000, () => {
? console.log('listening on *:3000');
})

前端響應(yīng)接受 使用了vue腳手架

<template>
? <div id="app">
? ? <img :src="src" alt="12">
? </div>
</template>
<script>
export default {
? data () {
? ? return {
? ? ? src: ''
? ? }
? },
? created () {
? ? function blobToDataURI (blob) {
? ?? ??? ?return new Promise((resolve, reject) => {
? ? ? ?? ?let reader = new FileReader()
? ? ? ?? ?reader.readAsDataURL(blob)//blob
? ? ? ?? ?reader.onload = function (e) {
? ? ? ? ? resolve(e.target.result)//base64
? ? ? }
? })
? }
fetch('http://localhost:3000/send').then(x=>x.blob())
.then(async res=>{
? var body = document.body
?await blobToDataURI(res).then(reu => {
? ? this.src = reu // base64顯示圖片
? })
? //this.src = URL.createObjectURL(res) blob流顯示圖片
? console.log(URL.createObjectURL(res))
? var a = document.createElement('a')
? a.setAttribute('href', URL.createObjectURL(res))
? body.appendChild(a)
? //Blob {size: 50107, type: "application/octet-stream"}
? res 二進(jìn)制blob
? a.setAttribute('download','1.jpg') // 1.jpg 是動(dòng)態(tài)的 根據(jù)文件類型來(lái)取名
? a.click()
})
? }
}
</script>

精簡(jiǎn)版

function base (blob) {
? ? ? var read = new FileReader()
? ? ? read.readAsDataURL(blob)
? ? ? read.onload = function (x) {
? ? ? ? console.log(x.target.result)
? ? ? ? var body = document.body
? ? ? var a = document.createElement('a')
? ? ? a.setAttribute('download', '1.pdf')
? ? ? a.setAttribute('href', x.target.result)
? ? ? body.appendChild(a)
? ? ? a.click()
? ? ? }
? ? }
? ? fetch('http://localhost:3000/send').then(x => x.blob()).then(x => {
? ? ? console.log(x)
? ? ? var body = document.body
? ? ? var a = document.createElement('a')
? ? ? // var url = window.URL.createObjectURL(new Blob([x]))
? ? ? base(new Blob([x]))
? ? ? // a.setAttribute('download', '1.pdf')
? ? ? // a.setAttribute('href', url)
? ? ? // body.appendChild(a)
? ? ? // a.click()
? ? })

nodejs讀取文件 createReadStream

參數(shù):

  • 第一個(gè)參數(shù):讀取文件的路徑
  • 第二個(gè)參數(shù):highWaterMark 最高水位線,默認(rèn)最多讀取64K

讀取的內(nèi)容都是buffer類型

返回的結(jié)果是一個(gè)可讀流的實(shí)例,是非流動(dòng)模式–我們最后要轉(zhuǎn)化為流動(dòng)模式

let rs=fs.createReadStream('./1.txt',{highWaterMark:1})

設(shè)置最高水位線每次讀取1k

let fs=require("fs");
// 第一個(gè)參數(shù),讀取文件的路徑
//第二個(gè)參數(shù) highWaterMark 最高水位線,默認(rèn)最多讀取64K
//讀取的類容都是buffer類型
//返回的結(jié)果是一個(gè)可讀流的實(shí)例,是非流動(dòng)模式---我們最后要轉(zhuǎn)為流動(dòng)模式
// 轉(zhuǎn)流動(dòng)模式需要on事件監(jiān)測(cè)
let rs=fs.createReadStream('./1.txt',{highWaterMark:1})
//在內(nèi)部不斷觸發(fā)rs.emit('data',數(shù)據(jù));data不能更改,留動(dòng)模式開(kāi)啟后,數(shù)據(jù)會(huì)瘋狂觸發(fā)data事件
let arr=[];
rs.on('data',function (chunk) {  //chunk是buffer類型
    arr.push(chunk);
})
//監(jiān)聽(tīng)文件讀取完畢,會(huì)自動(dòng)觸發(fā)一次end事件,沒(méi)有讀取完是不會(huì)觸發(fā)的
//Buffer.concat合并小buffer
rs.on('end',function (chunk) {
    
    console.log( Buffer.concat(arr).toString());
})
// 監(jiān)聽(tīng)錯(cuò)誤
rs.on('error',function (err) {
    console.log(err);
})
// rs.resume() 恢復(fù)讀取
// rs.pause()  暫停讀取
//這兩個(gè)都控制是否繼續(xù)觸發(fā)data事件

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

相關(guān)文章

  • 完美解決node.js中使用https請(qǐng)求報(bào)CERT_UNTRUSTED的問(wèn)題

    完美解決node.js中使用https請(qǐng)求報(bào)CERT_UNTRUSTED的問(wèn)題

    下面小編就為大家?guī)?lái)一篇完美解決node.js中使用https請(qǐng)求報(bào)CERT_UNTRUSTED的問(wèn)題。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-01-01
  • Node.js利用console輸出日志文件的方法示例

    Node.js利用console輸出日志文件的方法示例

    本篇文章主要介紹了Node.js利用console輸出日志文件的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • Node.js中常用文件系統(tǒng)操作的示例詳解

    Node.js中常用文件系統(tǒng)操作的示例詳解

    這篇文章將深入探討?Node.js?中的文件系統(tǒng)(fs)模塊,它是?Node.js?中進(jìn)行文件讀寫(xiě)的核心模塊,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-02-02
  • node.js讀取文件到字符串的方法

    node.js讀取文件到字符串的方法

    這篇文章主要介紹了node.js讀取文件到字符串的方法,涉及readFileSync方法的使用技巧,需要的朋友可以參考下
    2015-06-06
  • 使用Node操作MySQL的兩種方式

    使用Node操作MySQL的兩種方式

    本文將介紹如何在?Node.js?應(yīng)用中使用?mysql2?和?TypeORM?兩種方式操作?MySQL?數(shù)據(jù)庫(kù),文中通過(guò)代碼示例介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)有一定的幫助,需要的朋友可以參考下
    2024-05-05
  • 給nodejs升級(jí)的兩種方法

    給nodejs升級(jí)的兩種方法

    nodejs是一種流行的服務(wù)器端JavaScript運(yùn)行環(huán)境,它經(jīng)常需要更新以獲取最新的功能和性能優(yōu)化,本文將給大家介紹了給nodejs升級(jí)的兩種方法,文中通過(guò)代碼示例講解非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • nodejs前端模板引擎swig入門(mén)詳解

    nodejs前端模板引擎swig入門(mén)詳解

    這篇文章主要介紹了nodejs前端模板引擎swig入門(mén)詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • 用Node.js遍歷多級(jí)目錄處理文件的代碼詳解

    用Node.js遍歷多級(jí)目錄處理文件的代碼詳解

    在日常開(kāi)發(fā)中,處理大量的文件操作是一個(gè)常見(jiàn)的需求,特別是在圖像處理和存檔管理領(lǐng)域,本文給大家介紹了如何用Node.js遍歷多級(jí)目錄處理文件,文章給出了主要步驟和完整代碼,需要的朋友可以參考下
    2024-06-06
  • Windows7系統(tǒng)下如何安裝nodejs16以上版本

    Windows7系統(tǒng)下如何安裝nodejs16以上版本

    這篇文章主要給大家介紹了關(guān)于Windows7系統(tǒng)下如何安裝nodejs16以上版本的相關(guān)資料,很多時(shí)候node.js的版本存在兼容,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • node.js通過(guò)axios實(shí)現(xiàn)網(wǎng)絡(luò)請(qǐng)求的方法

    node.js通過(guò)axios實(shí)現(xiàn)網(wǎng)絡(luò)請(qǐng)求的方法

    下面小編就為大家分享一篇node.js通過(guò)axios實(shí)現(xiàn)網(wǎng)絡(luò)請(qǐng)求的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03

最新評(píng)論

民乐县| 崇州市| 墨竹工卡县| 乌苏市| 房山区| 郎溪县| 麻栗坡县| 建瓯市| 方城县| 新巴尔虎左旗| 乌苏市| 曲阜市| 和顺县| 乌兰察布市| 濮阳市| 西乌| 磐安县| 高碑店市| 枣强县| 南昌县| 原平市| 山阴县| 吐鲁番市| 富源县| 富锦市| 绥德县| 临泉县| 客服| 红桥区| 阿坝县| 德清县| 昭通市| 桓台县| 宝山区| 剑阁县| 华宁县| 靖安县| 天气| 龙海市| 乐业县| 红安县|