Nest.js 中如何使用 @UploadedFile 和 @UploadedFiles 装饰器?

推荐答案

在 Nest.js 中,@UploadedFile@UploadedFiles 装饰器用于处理文件上传。它们通常与 @Post 装饰器一起使用,以便在控制器中处理文件上传请求。

使用 @UploadedFile 装饰器

@UploadedFile 装饰器用于处理单个文件上传。以下是一个示例:

-- -------------------- ---- -------
------ - ----------- ----- ------------- --------------- - ---- -----------------
------ - --------------- - ---- ---------------------------

---------------------
------ ----- ---------------- -
  ---------------
  -----------------------------------------
  -------------------------------- ----- -------------------- -
    ------------------
    ------ ----- -------- ---------------
  -
-

在这个示例中,FileInterceptor 用于拦截文件上传请求,并将文件存储在 file 参数中。@UploadedFile 装饰器将文件对象注入到 file 参数中。

使用 @UploadedFiles 装饰器

@UploadedFiles 装饰器用于处理多个文件上传。以下是一个示例:

-- -------------------- ---- -------
------ - ----------- ----- -------------- --------------- - ---- -----------------
------ - ---------------- - ---- ---------------------------

---------------------
------ ----- ---------------- -
  -----------------
  -------------------------------------------
  ------------------------------------ ------ --------------------------- -
    -------------------
    ------ ------ -------- ---------------
  -
-

在这个示例中,FilesInterceptor 用于拦截多个文件上传请求,并将文件存储在 files 参数中。@UploadedFiles 装饰器将文件数组注入到 files 参数中。

本题详细解读

@UploadedFile@UploadedFiles 的作用

@UploadedFile@UploadedFiles 是 Nest.js 提供的装饰器,用于处理文件上传。它们分别用于处理单个文件和多个文件的上传请求。

FileInterceptorFilesInterceptor 的作用

FileInterceptorFilesInterceptor 是 Nest.js 提供的拦截器,用于拦截文件上传请求。FileInterceptor 用于处理单个文件上传,而 FilesInterceptor 用于处理多个文件上传。

文件对象的类型

@UploadedFile@UploadedFiles 装饰器注入的文件对象的类型是 Express.Multer.File。这个对象包含了文件的各种信息,如文件名、文件大小、文件类型等。

文件上传的配置

在实际应用中,你可能需要对文件上传进行一些配置,如限制文件大小、限制文件类型等。这些配置可以通过 multer 库来实现。你可以在 FileInterceptorFilesInterceptor 中传递配置对象来进行配置。

-- -------------------- ---- -------
---------------------------------------- -
  ------- - --------- ---- - ---- -- -- ------- ---
  ----------- ----- ----- --------- -- -
    -- -------------- --- ------------- -
      -------------- ------
    - ---- -
      ------------ ----------- ---- ----- --- ----------- -------
    -
  -
---

通过这种方式,你可以灵活地控制文件上传的行为。

纠错
反馈