我正在研究 NestJS。我想向客户提供图像文件。但它不起作用。
这是我的项目结构。
/MyProject
/src
app.module.ts
..
/uploads
myimage.png
图像文件位于/uploads中。此外,我在 main.ts 中设置了前缀 url,如下所示,
app.setGlobalPrefix('file');
这是我的 ServeStaticModule 在 app.module.ts 中,
ServeStaticModule.forRoot({
rootPath: join(__dirname, '..', '../../uploads'),
serveRoot: '/public/'
})
当我尝试访问图像时,
http://localhost:5004/file/public/myimage.png 或
http://localhost:5004/public/myimage.png 或
http://localhost:5004/file/public/uploads/myimage.png 或
http://localhost:5004/public/uploads/myimage.png 或
我会从服务器收到 404 错误。
错误是这样的
{“message”:“无法获取/file/public/myimage.png”,“错误”:“未找到”,“statusCode”:404}
感谢您的每一次帮助。
我刚刚遇到这个问题。经过深入研究后发现问题可能源于路径。之前
// Serve static files from the 'uploads' directory
app.useStaticAssets(join(__dirname, '..', '上传'), { 前缀:'/上传/', }); 当我记录像 console.log('静态文件目录:', join(__dirname, '..', 'uploads')); 这样的路径时记录为静态文件目录:C:\Workspace\my-fkn-prj\uploads
当您使用 npm run start:prod 或 npm run build 等命令运行应用程序时,dist 文件夹是 NestJS 将 TypeScript 代码编译为 JavaScript 的默认目录。但不确定为什么 npm run start:dev 会发生这种情况。需要检查一下。
这就是为什么 join(__dirname, '..', 'uploads') 路径解析为 C:\Workspace\my-fkn-prj\dist\uploads - 它假设 uploads 文件夹位于 dist 目录内。
之后
// Serve static files from the 'uploads' directory
app.useStaticAssets(join(__dirname, '..', '..', '上传'), { 前缀:'/上传/', });