感谢参考链接:https://www.cnblogs.com/ajanuw/p/9575278.html
首先根据官方文档提供的示范添加接口
接口名必须要和方法名一致啊。不然走不进去
示例一下我都整个过程
@Post('uploads')
@UseInterceptors(FileFieldsInterceptor([
{ name: 'musicfile', maxCount: 1 },
{ name: 'musicname', maxCount: 1 },
{ name: 'release_date', maxCount: 1 },
{ name: 'coverfile', maxCount: 1 },
{ name: 'belong_user', maxCount: 1 }
]))
async uploads(@UpUploadedFiles() files,@Body() body) {
return await this.musicService.uploads(files,body)
}
代码对应需要接收的参数然后上传的file在@UpUploadedFiles() files中,上传的文本在@Body() body中
紧接着走入提供者service层的方法
async uploads(files, body) {
// 获取body中的文本参数
let { musicname,release_date,belong_user } = body
const musicFilesName = Date.now() + files.musicfile[0]['originalname']
const musicFilesBuffer = files.musicfile[0]['buffer']
// 记录存储后的文件位置。根据实际情况而定。
const music_url = 'D:/nest_js/startnest/dist/upload/' + `${musicFilesName}`
const writeMusic = createWriteStream(join(__dirname, '../../', 'upload', `${musicFilesName}`))
// 写入目标目录中
writeMusic.write(musicFilesBuffer)
// 图片也是一样的操作
const musicCoverName = Date.now() + files.coverfile[0]['originalname']
const musicCoverBuffer = files.coverfile[0]['buffer']
const cover_url = 'D:/nest_js/startnest/dist/cover/' + `${musicCoverName}`
const writeMusicCover = createWriteStream(join(__dirname, '../../','cover', `${musicCoverName}`))
writeMusicCover.write(musicCoverBuffer)
let otherProperty: Music = {
name: musicname,
release_date: release_date,
listen: 0,
belong_user: belong_user,
music_url: music_url,
cover_url: cover_url
}
// 创建实现Music接口的实例
// 走入存储数据库方法
return await this.create(otherProperty)
}
async create(music: Music): Promise<Music> {
// 我这里使用的是mongoDB
return await this.musicModel.insertMany(music);
}
至此整个流程就完成。