如何使用Nest.js 上传文件及自定义文件名保存

简介: 在 Nest.js 中进行文件上传并自定义文件名保存的过程相对简单

安装依赖:首先,确保已安装 multer@nestjs/platform-express 依赖。

npm install --save multer @nestjs/platform-express

创建文件上传控制器:在适当的位置创建一个文件上传的控制器,并使用 @UseInterceptors 装饰器将 FileInterceptor 应用到指定的路由处理程序上。

import {
    Controller, Post, UploadedFile, UseInterceptors } from '@nestjs/common';
import {
    FileInterceptor } from '@nestjs/platform-express';
import {
    diskStorage } from 'multer';
import {
    extname } from 'path';

@Controller('upload')
export class UploadController {
   
  @Post()
  @UseInterceptors(
    FileInterceptor('file', {
   
      storage: diskStorage({
   
        destination: './uploads',
        filename: (req, file, cb) => {
   
          const uniqueSuffix = Date.now() + '-' + Math.round(Math.random() * 1E9);
          const fileExtension = extname(file.originalname);
          cb(null, `${file.fieldname}-${uniqueSuffix}${
     fileExtension}`);
        },
      }),
    }),
  )
  uploadFile(@UploadedFile() file: Express.Multer.File) {
   
    // 处理上传文件
    console.log(file);
  }
}

在上面的示例中,我们使用 FileInterceptor 拦截器来处理文件上传,同时使用 diskStorage 存储引擎自定义文件存储位置和文件名。在 filename 方法中,我们生成一个带有时间戳和随机数的唯一文件名。

定义上传路径:确保创建一个合适的文件夹(例如 uploads)来保存上传的文件。在上述代码中,我们使用 destination 属性指定存储位置为 ./uploads。

调试文件上传:运行你的 Nest.js 应用程序,并通过 POST 请求将文件上传到 /upload 路由。

现在,当你上传文件时,它将被存储在指定的文件夹中,并以自定义的文件名进行保存。

相关文章
|
开发框架 前端开发 JavaScript
在Vue&Element前端项目中,使用FastReport + pdf.js生成并展示自定义报表
在Vue&Element前端项目中,使用FastReport + pdf.js生成并展示自定义报表
|
存储 JavaScript 前端开发
JS上传文件(base64字符串和二进制文件流)
这篇文章介绍了两种JavaScript文件上传的方法:使用FileReader对象将文件读取为base64字符串上传,以及使用FormData对象以二进制文件流的形式上传文件,包括如何处理文件选择、读取和上传的详细代码示例。
1710 2
JS上传文件(base64字符串和二进制文件流)
|
存储 前端开发 JavaScript
javascript 异常问题之为自定义异常提供丰富的上下文信息如何实现
javascript 异常问题之为自定义异常提供丰富的上下文信息如何实现
209 0
|
移动开发 JavaScript 前端开发
原生js如何获取dom元素的自定义属性
原生js如何获取dom元素的自定义属性
685 4
|
前端开发 微服务 API
微服务浪潮下的JSF革新:如何在分散式架构中构建统一而强大的Web界面
【8月更文挑战第31天】随着微服务架构的兴起,企业将应用拆分成小型、独立的服务以提高系统可维护性和可扩展性。本文探讨如何在微服务架构下构建和部署JavaServer Faces (JSF) 应用,通过RESTful服务实现前后端分离,提升灵活性和适应性。
293 1
|
前端开发 程序员
HTML+CSS+JavaScript制作动态七夕表白网页(含音乐+自定义文字)
一年一度的520情人节/七夕情人节/女朋友生日/程序员表白,是不是要给女朋友或者正在追求的妹子一点小惊喜呢,今天这篇博客就分享下前端代码如何实现HTML+CSS+JavaScript制作七夕表白网页(含音乐+自定义文字)。赶紧学会了,来制作属于我们程序员的浪漫吧!
658 0
HTML+CSS+JavaScript制作动态七夕表白网页(含音乐+自定义文字)
|
JavaScript NoSQL Serverless
函数计算产品使用问题之如何创建一个自定义运行时并指定Node.js版本
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
378 8
|
JavaScript 前端开发 数据安全/隐私保护
Vue.js 表单处理技巧大揭秘!v-model 与自定义验证综合运用,打造高效表单处理体验!
【8月更文挑战第31天】Vue.js 是一款备受欢迎的前端框架,其表单处理功能强大且灵活。v-model 指令可实现双向数据绑定,简化表单元素值与 Vue 实例数据的同步过程;结合自定义验证规则,则能确保用户输入数据符合特定要求。无论是简单的单字段校验还是复杂的多字段验证,Vue.js 均提供了简洁有效的解决方案,有效提升了表单处理效率及用户体验。通过综合运用 v-model 和自定义验证,开发者能够实时反馈错误信息并控制表单状态,从而增强应用的交互性与可靠性。
299 0
|
JavaScript PHP 开发者
PHP中的异常处理与自定义错误处理器构建高效Web应用:Node.js与Express框架实战指南
【8月更文挑战第27天】在PHP编程世界中,异常处理和错误管理是代码健壮性的关键。本文将深入探讨PHP的异常处理机制,并指导你如何创建自定义错误处理器,以便优雅地管理运行时错误。我们将一起学习如何使用try-catch块捕获异常,以及如何通过set_error_handler函数定制错误响应。准备好让你的代码变得更加可靠,同时提供更友好的错误信息给最终用户。

热门文章

最新文章