gpt4 book ai didi

node.js - 使用 NextJS API 发送文件作为响应

转载 作者:行者123 更新时间:2023-12-03 17:24:00 27 4
gpt4 key购买 nike

如题,
在 NodeJs + Express 中,我可以使用以下行返回一个文件作为响应

res.sendFile(absolute_path_to_the_file)
假设我想从 NextJs 目录中的输出文件夹返回单个图像,我如何使用 NextJs API 实现这一点?我只能看到 res.send() 和 res.json() 作为返回响应的方式,我不确定如何利用它将图像作为响应返回给调用者。
如果我喜欢这个
res.send(absolute_path_to_the_file)
它只会向我发送目录路径的字符串。我期望的是从目录路径表示的目录发送的图像。
在这里需要帮助。

最佳答案

在这里为那些也想知道的人回答我自己的问题..
我在 NextJS 中做了一个关于它的主题,他们给了我一个很好的答案 - here
这样做的两种方法是使用 readStream

var filePath = path.join(__dirname, 'myfile.mp3');
var stat = fileSystem.statSync(filePath);

response.writeHead(200, {
'Content-Type': 'audio/mpeg',
'Content-Length': stat.size
});

var readStream = fileSystem.createReadStream(filePath);
// We replaced all the event handlers with a simple call to readStream.pipe()
readStream.pipe(response);
或将对象更改为缓冲区并使用发送方法
/*
Project structure:
.
├── images_folder
│ └── next.jpg
├── package.json
├── pages
│ ├── api
│ │ └── image.js
│ └── index.js
├── README.md
└── yarn.lock
*/

// pages/api/image.js

import fs from 'fs'
import path from 'path'

const filePath = path.resolve('.', 'images_folder/next.jpg')
const imageBuffer = fs.readFileSync(filePath)

export default function(req, res) {
res.setHeader('Content-Type', 'image/jpg')
res.send(imageBuffer)
}
这两个答案都适用于我的情况。使用 process.cwd()导航到需要作为响应发送的文件/图像。

关于node.js - 使用 NextJS API 发送文件作为响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63066985/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com