Reputation: 39
I have a nestjs project, in the root of the site there is an uploads folder, there are files of different extensions there. How should I process them?
http://localhost:7777/uploads/audio/85/0.mp3 http://localhost:7777/uploads/movie/85/0.mp4
When I do this I get an error:
{ "statusCode": 404, "message": "ENOENT: no such file or directory, stat 'G:\myproject\uploads\index.html'" }
In App.module I did everything as in the nest documentation:
import { ServeStaticModule } from '@nestjs/serve-static';
import { join } from 'path';
@Module({
imports: [
ServeStaticModule.forRoot({
rootPath: join(__dirname, '../../../', 'uploads'),
}),
UsersModule
Main.ts
import { NestFactory } from '@nestjs/core';
import { AppModule } from './App/app.module';
import { ConfigService } from '@nestjs/config';
import { ValidationPipe } from '@nestjs/common';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
const configService = app.get(ConfigService);
const port = configService.get('PORT');
app.enableCors();
app.useGlobalPipes(new ValidationPipe());
await app.listen(port);
}
bootstrap();
Upvotes: 3
Views: 2449
Reputation: 36604
Since it looks inside uploads
folder already, it might be trying to look for uploads
inside uploads
if you know what I mean.
So, you can explicitly mention it as a URL prefix like this
@Module({
imports: [
ServeStaticModule.forRoot({
rootPath: join(__dirname, '..', '..', 'uploads'),
// Tell NestJS to serve the files under ~/uploads/
serveRoot: '/uploads/',
}),
],
})
export class AppModule {}
I ran the repository you mentioned in comments and added a console log. Looks like it's trying to access uploads
under the dist
folder. This might be your other issue.
I managed to get it working on the repository you added in the comments, by 2 things:
..
to account for the dist
folderLike this:
ServeStaticModule.forRootAsync({
useFactory: () => {
const uploadsPath = join(__dirname, '..', '..', '..', 'uploads');
return [
{
rootPath: uploadsPath,
serveRoot: '/uploads/',
},
];
},
}),
Result:
Upvotes: 1