在我的Node/Express应用程序中,我有以下代码,它假设从文件中读取PDF文档,并将其发送到浏览器:
var file = fs.createReadStream('./public/modules/datacollectors/output.pdf', 'binary');
var stat = fs.statSync('./public/modules/datacollectors/output.pdf');
res.setHeader('Content-Length', stat.size);
res.setHeader('Content-Type', 'application/pdf');
res.setHeader('Content-Disposition', 'attachment; filename=quote.pdf');
res.pipe(file, 'binary');
res.end();
Run Code Online (Sandbox Code Playgroud)
我没有收到任何错误,但我也没有在浏览器中获取该文件.我究竟做错了什么?
如题,
在 NodeJs + Express 中,我可以使用以下行返回一个文件作为响应
res.sendFile(absolute_path_to_the_file)
Run Code Online (Sandbox Code Playgroud)
假设我想从 NextJs 目录中的输出文件夹返回单个图像,我如何使用 NextJs API 实现这一点?我只能看到 res.send() 和 res.json() 作为返回响应的方式,我不确定如何利用它将图像作为响应返回给调用者。
如果我喜欢这个
res.send(absolute_path_to_the_file)
Run Code Online (Sandbox Code Playgroud)
它只会向我发送目录路径的字符串。我期望的是从目录路径表示的目录发送的图像。
在这里需要帮助。
我正在使用 Nextjs 来构建我的应用程序。我正在使用 AWS s3 来存储我的静态文件(图像和 PDF,..)
我希望我的应用程序的用户能够下载该文件。我使用此处提到的答案来开发解决方案,它有效,但图像不可读。表明
我们似乎不支持此文件格式
这是我的脚本:
// /pages/api/getFile.js
import { NextApiRequest, NextApiResponse } from "next";
import stream from 'stream';
import { promisify } from 'util';
import s3 from "../../../../utils/s3-utils";
const pipeline = promisify(stream.pipeline);
export default async (req: NextApiRequest, res: NextApiResponse) => {
const bucketName = process.env.S3_UPLOAD_BUCKET || ""
const imageKey: any = req.query.imgkey
const downloadParams = {
Key: imageKey,
Bucket: bucketName
}
const downloadedObject = await s3.getObject(downloadParams).promise()
const readableFile= downloadedObject.Body?.toString('base64') || "" …Run Code Online (Sandbox Code Playgroud)