nodejs如何读取文件二进制 前端响应blob或base64显示图片

一、读取文件二进制

在Node.js中,要读取文件二进制,可以使用Node.js内置的fs模块。可以通过调用fs.readFile方法来读取文件并将其保存到Buffer中,然后将其转换为二进制字符串。

以下是一个简单的示例:

const fs = require('fs');

fs.readFile('./image.jpg', (err, image) => {
  if (err) throw err;

  const imageBinary = image.toString('binary');
  console.log(imageBinary);
});

这个示例从当前目录下的image.jpg文件中读取了二进制数据,并将其保存到Buffer对象中。然后,通过调用Buffer.toString方法将Buffer对象转换为二进制字符串,并打印到控制台中。

二、前端响应blob或base64显示图片

在前端,可以使用Blob对象或Base64字符串来显示图片。下面分别介绍它们的实现方法。

  1. Blob对象

要使用Blob对象来显示图片,可以使用XMLHttpRequest对象中的responseType属性。将其设置为"blob",即可将响应类型设置为Blob对象。然后,可以使用URL.createObjectURL方法将Blob对象转换为URL,并将其传递给img元素的src属性。

以下是实现代码:

const xhr = new XMLHttpRequest();
xhr.open('GET', '/image.jpg', true);
xhr.responseType = 'blob';
xhr.onload = () => {
  if (xhr.status === 200) {
    const imageBlob = xhr.response;
    const imageUrl = URL.createObjectURL(imageBlob);
    const img = document.createElement('img');
    img.src = imageUrl;
    document.body.appendChild(img);
  }
};
xhr.send();

这个示例发送了一个GET请求来获取图片,然后将其响应类型设置为Blob对象。在加载完成之后,通过调用URL.createObjectURL方法将Blob对象转换为URL,并使用img元素来显示它。

  1. Base64字符串

要使用Base64字符串来显示图片,可以在XMLHttpRequest对象中使用responseType属性将响应类型设置为text格式。在xhr.onload中,通过调用window.btoa方法将响应字符串转换为Base64字符串,并将其传递给img元素的src属性。

以下是实现代码:

const xhr = new XMLHttpRequest();
xhr.open('GET', '/image.jpg', true);
xhr.responseType = 'text';
xhr.onload = () => {
  if (xhr.status === 200) {
    const imageBase64 = xhr.response;
    const imageUrl = `data:image/jpeg;base64,${imageBase64}`;
    const img = document.createElement('img');
    img.src = imageUrl;
    document.body.appendChild(img);
  }
};
xhr.send();

这个示例发送了一个GET请求来获取图片,并将响应类型设置为文本格式。在加载完成之后,通过调用window.btoa方法将响应字符串转换为Base64字符串,并使用img元素来显示它。这里需要注意的是,在生成Base64字符串时需要指定相应图片的MIME类型。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:nodejs如何读取文件二进制 前端响应blob或base64显示图片 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • Vue.directive()的用法和实例详解

    Vue.directive() 是 Vue 中非常强大的一个特性,可以用于拓展或增强某个 HTML 元素的行为,比如增加某个元素的颜色、动画、操作等行为,可以帮助我们将复杂的业务逻辑转换成易于维护的 HTML 代码。 Vue.directive() 的基本用法 Vue.directive() 方法用于创建和注册自定义指令,语法如下: Vue.directiv…

    Vue 2023年5月28日
    00
  • 基于 vue-skeleton-webpack-plugin 的骨架屏实战

    让我来详细讲解“基于 vue-skeleton-webpack-plugin 的骨架屏实战”的完整攻略。 简介 随着客户端应用的普及以及前端性能要求的不断提高,页面骨架屏方案得到了广泛的应用。Vue.js 作为目前最受欢迎的前端框架之一,也有很多骨架屏方案可供选择。在这里,我们以 vue-skeleton-webpack-plugin 为例,介绍使用骨架屏实…

    Vue 2023年5月28日
    00
  • JS封装通过className获取元素的函数示例

    那么我们来详细讲解一下如何通过JS封装函数来操作DOM元素并获取元素集合。 函数目的 我们希望封装一个函数,用于通过class名称来获取DOM元素,返回一个DOM元素或DOM元素集合. 函数实现 首先,我们需要知道获取DOM元素的方法,通常我们使用document的getElementsByClassName方法,但是这个方法返回的是一个HTMLCollec…

    Vue 2023年5月28日
    00
  • vue项目刷新当前页面的三种方式(重载当前页面数据)

    有关Vue项目刷新当前页面的三种方式,可以从以下三个方面展开说明: 1. 利用location.reload()方法进行页面刷新 在Vue中,可以通过调用浏览器原生的location.reload()方法来实现页面刷新。该方法会重新加载当前页面,重新发起一次网络请求,对页面元素进行重绘,因此能够实现重载当前页面数据的目的。可以在Vue组件中定义一个方法,通过…

    Vue 2023年5月29日
    00
  • vue实现拖拽效果

    请按照下面的内容进行阅读。 拖拽效果的实现原理 在 Vue 中实现拖拽效果,通常需要用到两个事件:鼠标按下和鼠标移动。当鼠标按下时,记录下鼠标按下的位置,然后在鼠标移动事件中计算出当前位置和按下位置的差值,再用 JS 或 CSS 把要拖拽的元素移动到当前位置即可。 实现步骤 1. 添加拖拽功能的 HTML 结构 在 HTML 中,我们需要添加一个可拖拽元素,…

    Vue 2023年5月28日
    00
  • vue-cli 打包后提交到线上出现 “Uncaught SyntaxError:Unexpected token” 报错

    当使用vue-cli进行代码打包后,提交到线上服务器运行时,有时会遇到类似于“Uncaught SyntaxError: Unexpected token”这样的报错,这种问题可能是由于代码中存在ES6语法而服务器不支持引起的。针对这种问题,可以采取以下几个步骤: 确认线上服务器是否支持ES6语法,如果不支持,则需要对代码进行转译处理。 使用babel对代码…

    Vue 2023年5月28日
    00
  • Vue实现上拉加载下一页效果的示例代码

    下面是“Vue实现上拉加载下一页效果的示例代码”的攻略: 1. 实现思路 要实现上拉加载下一页的效果,需要监测滚动条的位置,当滚动条滚到底部时,就加载下一页的数据。具体实现过程如下: 在data中定义一个page变量,表示当前加载的页数; 在created生命周期钩子函数中,初始化page变量为1,同时调用加载数据的方法; 定义一个loadData()方法,…

    Vue 2023年5月27日
    00
  • vue生成文件本地打开查看效果的实例

    让我来详细讲解一下“Vue生成文件本地打开查看效果的实例”的完整攻略。整个过程分为以下几个步骤: 1. 安装Vue Cli 首先,我们需要全局安装Vue的脚手架工具Vue Cli。可以使用以下命令进行安装: npm install -g @vue/cli 2. 创建Vue项目 使用Vue Cli创建一个新的Vue项目。 vue create my-proje…

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部