nestJs 之 fileupload 自定义路径与文件名

在写nest项目的时候,写到fileupload 这段时,根据官方文档,发现,上传过来的文件全部都变成了一串加密的编码,例如:

加密编码图示.png

于是本来在issue中希望能够找到解决方法,但是完全没办法解决这类问题。于是博主开始翻阅了nestJS的源码。

FileInterceptor 的 MulterOptions 源码.png

这里我们知道了,nest.js 使用的是multer 来封装的,所以我们可以直接使用multer类来进行自定义处理

根据此github 文档,我们可以直接在uploadController中书写:

import { Controller, Post, UseInterceptors, UploadedFile, FileInterceptor} from '@nestjs/common';
import multer = require('multer');
@Controller('upload')
export class UploadController {
    @Post()
    @UseInterceptors(FileInterceptor('file', {
        storage: multer.diskStorage({
            destination: (req, file, cb) => {
                cb(null, 'c:/Users/ke_li/Desktop/test/');
            },
            filename: (req, file, cb) => {
                cb(null, file.originalname);
            },
        }),
    }))
    async uploade(@UploadedFile() file) {
        return file;
    }
}

说明:destination类似于option字段 desk,指定uploadfile的目录,filename则是当前upload的file给予指定文件的文件名称, file.originalname 则是 file 在本地的文件名

于是我们获得了以下请求:

postman 请求.png

文件上传的目录

上传的文件.png

这样就完成了我们对文件目录及名称的自定义。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器学习与统计学

R Programming week2 Control Structures

Control structures in R allow you tocontrol the flow of execution of the program...

9520
来自专栏开发之途

重拾Kotlin(6)-抽象类、数据类、密封类、枚举类、匿名内部类、内部类、嵌套类

声明为 abstract 的类内部可以包含没有实现体的成员方法,且该成员方法也用 abstract 标记,这种类称为抽象类,包含的没有实现体的方法称为抽象方法

12410
来自专栏三流程序员的挣扎

滑动吸顶效果

需求是先滑动里面的列表,滑动到一个位置时外面滑动,外面滑动一段距离后再里面滑动。最初想用 CoordinatorLayout 加 RecyclerView,但效...

43710
来自专栏计算机编程

NestJs 静态目录配置

由于官方文档没有做详细解释说明,那么我们可以从此框架底层入手: 我们知道,nestjs底层用的是express,那么express是通过什么来完成静态目录构建...

43630
来自专栏崔庆才的专栏

Google:数据并行对神经网络训练用时的影响

近年来,硬件的不断发展使数据并行计算成为现实,并为加速神经网络训练提供了解决方案。为了开发下一代加速器,最简单的方法是增加标准 minibatch 神经网络训练...

12330
来自专栏Android技术分享

Android Q和中端手机:这是我们在谷歌I/O 2019上看到的所有东西

什么一个开端。谷歌I/O 2019主题演讲结束了,但从头到尾感觉都像是一场力作。虽然我们的一些预测没有成真——我们将永远不会有像素手表吗?-最期待的谣言成真,这...

15440
来自专栏bisal的个人杂货铺

ORACLE不能使用索引的原因分析

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.n...

22040
来自专栏酷玩时刻

TNW-开启公众号开发者模式

TNW: TypeScript(The) + Node.js(Next) + WeChat 微信公众号开发脚手架,支持 http 模块扩展、支持任何 Node....

13130
来自专栏ATYUN订阅号

2019谷歌I/O大会:两款全新Pixel,Android Q出炉,让AI无处不在

一年一度的谷歌I/O大会终于到来,这场科技盛会吸引了全球各地的开发者和用户,这次,整个大会都围绕着各种AI技术,可以说谷歌越来越离不开AI了。

11630

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励