簡體   English   中英

如何使用 axios 和 FormData 將文件和數據發送到 NestJS 服務器

[英]How to send file AND data with axios and FormData to a NestJS server

我需要通過單個請求將文件和一些元數據發送到 NestJS 服務器。 我正在嘗試以這種方式發送它:

let fd = new FormData();
fd.append('file', this.file, this.file.name);
fd.append('foo', this.foo);
fd.append('bar', this.bar);

await axios.put('/endpoint', fd, {
    headers: {
        'Content-Type': 'multipart/form-data'
    }
})

我有兩個問題:

  1. 這個代碼示例正確嗎?

  2. 如何解析/使用來自 NestJS 的請求正文? (我只找到了單個文件上傳的代碼)。


編輯:

這是一個 NestJS 代碼示例。

@Put()
async initUser(@Req() request: Request) {
    console.log(request.body);
}

即使使用這種極其簡化的方法,接收請求時也會記錄一個空主體。

這是來自瀏覽器檢查器的請求正文:

-----------------------------27800929197904260703262144890
Content-Disposition: form-data; name="foo"

value1
-----------------------------27800929197904260703262144890
Content-Disposition: form-data; name="bar"

value2
-----------------------------27800929197904260703262144890
Content-Disposition: form-data; name="pic"; filename="filename.png"
Content-Type: image/png

PNG

***GARBAGE***

-----------------------------27800929197904260703262144890--

編輯:

根據您的評論,1)您期望它做什么是正確的。

要獲取 NestJS 數據,只需在服務器端使用req.body


  1. 你試過運行它嗎?
  2. 與普通的 axios 響應一樣,您可以訪問從put()返回的響應的data屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM