首页 > 解决方案 > 如何在节点 js 中读取图像文件?

问题描述

我正在尝试读取图像和文本文件并aws s3 bucket使用 nodejs上传fs module。我没有使用任何快速服务器,而是调用 aws-sdk 并将项目上传到aws-s3.

这是我的项目结构的样子

在此处输入图像描述

在 s3.js 内部,我正在尝试读取 2.png 和 friends.json 文件 s3.js

const fs = require('fs');
const file = fs.readFileSync('../public/2.png', (err)=>console.log(err.message));

但是这个抛出和错误

Error: ENOENT: no such file or directory, open '../public/2.png'

可能出了什么问题?

标签: node.jsfsaws-sdk-js

解决方案


总是可以尝试绝对路径而不是相对路径并添加编码:

const fs = require('fs')
const path = require('path')

const image = path.join(__dirname, '../public/2.png')
const file = fs.readFileSync(image, {encoding:'utf8'})

也可以使用带有 Promise 的upng-js

const png = require("upng-js")
const fs = require('fs')

async function pngCode(img) {
try {
       return png.decode(await fs.promise.promisify(fs.readFile)(img)
    } catch (err) {
        console.error(err)
    }
}

pngCode('.../public/2.png')

我的手机上没有测试过任何代码。


推荐阅读