城市便條技術筆記
技術筆記 #015|multipart/form-data 上傳 PDF,為什麼後端還說只接受 application/pdf?
強迫自己每天輸出且(儘量)不用 AI 寫文章 Day024
前幾天在和前端做 API 整合測試時,遇到一個蠻小、但也讓我補到知識盲區的問題 😅
我的 API 規格寫的是 Content-Type: multipart/form-data,前端也確實照規格送 PDF,但打 API 時卻一直收到錯誤:
只接受 application/pdf
一開始我還想說:蛤?傳的明明就是 PDF 啊???
後來才發現,原來這裡有「兩層 Content-Type」。
外層 Request 是 Content-Type: multipart/form-data,代表這包 Request 裡面會有多個欄位、檔案。
但裡面的 PDF 是另一個 part,它自己也有 Content-Type:Content-Type: application/pdf。
所以就算你真的丟了一個 .pdf 進去,也不代表後端一定會把它辨識成 application/pdf。我們後來在 PDF 的那個 part 補上 MIME type 之後,就成功通過了。
一方面又學到一個以前看 API 文件會直接滑過去的細節,一方面也覺得自己終究還是太菜了,要再多練練才行 🥲
📍提醒自己,如果之後碰到「檔案明明傳對了,後端卻說檔案格式不接受」:除了檢查副檔名,也可以順手看看 multipart 裡「那個檔案 part 的 Content-Type」到底送了什麼。
另外同樣重要的是,API 規格書一定要寫清楚,才能降低雙方來回溝通的成本。