上传图片问题
来源:9-7 通用业务系统:日志模块代码重构(作业)

oldfu
2024-06-04
老师您好,我最近在用 nestjs做一个项目,在做图片上传功能时遇到一个问题,图片可以上传成功,在 dist/imgages目录下,问题是当我停到服务重新启动后,images 目录下的图片文件就消失了
`upload.module.ts
import { Module } from ‘@nestjs/common’;
import { UploadService } from ‘./upload.service’;
import { UploadController } from ‘./upload.controller’;
//文件上传需要的包
import { MulterModule } from ‘@nestjs/platform-express’;
import { diskStorage } from ‘multer’;
import { join, extname } from ‘path’;
@Module({
//里面有register 和 registerAsync 两个方法,前者是同步的,后者是异步的
imports: [MulterModule.register({
//图片上传完要存放的位置
storage: diskStorage({
destination: join(__dirname, ‘…/images’),//存放的文件路径
filename: (req, file, callback) => {
//重新定义文件名,file.originalname 文件的原始名称
// extname 获取文件后缀
const fileName = ${new Date().getTime() + extname(file.originalname)}
;
//返回新的名称,参数1是错误,这里用null就好
return callback(null, fileName)
}
}),
}
)],
controllers: [UploadController],
providers: [UploadService]
})
export class UploadModule { }
upload.controller.ts
`import { Controller, Post,UseInterceptors,UploadedFile } from ‘@nestjs/common’;
import { UploadService } from ‘./upload.service’;
// FileInterceptor用于单文件上传,FilesInterceptor用于多文件上传
import {FileInterceptor,FilesInterceptor} from ‘@nestjs/platform-express’
@Controller(‘upload’)
export class UploadController {
constructor(private readonly uploadService: UploadService) {}
@Post(‘album’)
// UseInterceptors 处理文件的中间件,file是一个标识名
@UseInterceptors(FileInterceptor(‘file’))
// UploadedFile装饰器是用于读取文件的
upload (@UploadedFile() file) {
console.log(“file:”,file)
return true
}
}
main.ts
import { VersioningType } from ‘@nestjs/common’;
import { NestFactory } from ‘@nestjs/core’;
import { AppModule } from ‘./app.module’;
import * as session from ‘express-session’;
import { NestExpressApplication } from ‘@nestjs/platform-express/interfaces’;
import { join } from ‘path’;
async function bootstrap() {
const app = await NestFactory.create(AppModule);
app.useStaticAssets(join(__dirname, ‘images’),{
prefix: “/img”
});
await app.listen(3000);
}
bootstrap();
上传是成功的,浏览器里也能正常访问,就是停到服务后图片消失不见了,也试过存在 dist目录外,这次倒是存上图片了,但是浏览器里一直报错找不到文件。不知道问题出哪儿了。
1回答
-
Brian
2024-06-04
你把代码git仓库上传上来
我好本地看看~~~
大概率 与你的目录有关系,“停到服务后图片消失不见了”——dist目录会清空,所以要放在其他目录
“也试过存在 dist目录外,这次倒是存上图片了,但是浏览器里一直报错找不到文件”——检查访问路径,是否提供该目录的静态资源服务
00
相似问题