我尝试使用Express的sendFile()函数发送图像。但目前似乎该函数根本没有阅读我的文件,并返回204无内容响应。
下面是我的函数/端点:
@httpGet('/pricereq')
async getAllPriceChangeReqs(@response() res: express.Response) {
try {
const data = await this.priceService.compilePriceChangeRequests();
const imagePath = path.resolve(data);
console.log(path.isAbsolute(imagePath));
console.log(imagePath);
return res.sendFile(imagePath);
} catch (err) {
return res.status(400).send({ error: err.message });
}
}
这里的data
变量检索存储在数据库中的部分路径。例如uploads/receipt-2023-03-11T13-48-41.124Z.jpg
。
然后,imagePath
变量根据该部分路径检索绝对路径。
我知道这条路径确实是绝对的,因为下面这行:console.log(path.isAbsolute(imagePath));
返回true。
我也知道路径实际上指向一个图像,因为如果我在文件资源管理器中打开它,它会打开图像。我使用Windows 10,如果这有任何区别的话。
我尝试过的事情:
- 将一个图像放入与这个名为
coffee.jpg
的函数完全相同的目录中。获取该图像的绝对路径并尝试发送该图像。我这样做是因为我认为我的sendFile()
函数不喜欢我的图像名称的格式。不起作用 - 已尝试
res.sendFile(imagePath);
而不是return res.sendFile(imagePath);
- 已尝试多种方法调用终结点。Postman和通过浏览器。结果相同。
我到底做错了什么?
1条答案
按热度按时间3duebb1j1#
将第二个参数作为
{ root : __dirname}
或{ root: 'your-root-location'}
传入sendFile