若要在 Postman 請求中傳送檔案,首先必須使用像 File to Base64 Converter 這類的本地轉換工具,將檔案編碼為符合規範的 RFC 4648 Base64 格式,然後將產生的字串貼到 Postman 的環境變數、前置請求腳本或 JSON 主體中。Postman 本身並未提供內建的「檔案轉 Base64」按鈕;其視覺化的請求建構器圍繞著 form-data、URL-encoded、raw 和 binary 主體類型打造,而其腳本沙箱只能在你指向磁碟上特定路徑時讀取檔案的位元組。這就是為什麼大多數在搜尋欄輸入「how to convert file to base64 in postman」的測試人員,最終都會在另一個工具中編碼位元組,再把輸出以純文字形式貼到請求中。編碼會使位元組數量增加大約三分之一,因為每三個輸入位元組會變成四個可列印字元,所以一個 10 MB 的檔案會變成約 13.33 MB 的 Base64 文字。編碼器必須保留每一個位元組,包括零值以及無效文字的值,並且必須輸出必要的等號填補字元,這樣接收端服務才能以確定性的方式解碼。一旦取得字串,Postman 就能以 JSON 欄位、以 {{image_base64}} 參考的環境變數,或在請求送出前於前置請求腳本中指派的值來傳遞它。

how to convert file to base64 in postman
how to convert file to base64 in postman

為什麼 Postman 經常需要檔案的 Base64 版本

Postman 本質上是一個 HTTP 用戶端。多數接受檔案的 API 會公開 multipart/form-data 端點,而 Postman 透過 form-data 主體類型直接處理這種情況,會在單一請求中串流實際的檔案位元組。當 API 並未公開 multipart 上傳、當文件規定必須使用包含字串欄位的 JSON 承載,或當檔案屬於必須以單一 JSON 物件傳送的較大結構化請求時,就需要使用 Base64 表示法。

典型的情境包括:接受單一字串 imageBase64 的頭像上傳端點、因合規原因將檔案嵌入 JSON 中的文件附件端點、模擬舊版 SOAP 或 XML-RPC 合約的內部管理工具,以及任何開發人員為了簡化而選擇單一欄位合約的測試固定資料。在所有這些情況下,檔案必須以純 ASCII 文字形式離開磁碟,Postman 才能將它送上線,而 Base64 是唯一能毫無跳脫困擾地放進 JSON 字串中的通用格式。原始檔案位元組中的 JSON 引號、反斜線、控制字元和 Unicode 換行符號,否則會需要不斷地跳脫;而 Base64 僅限於 ASCII 的一個安全子集,完全不需要引號。

什麼算是 Postman 承載的規範 Base64

File to Base64 Converter 在設計上就很嚴格,而這種嚴格正是保護 Postman 承載不被下游拒絕的原因。編碼器永遠輸出 RFC 4648 中定義的標準字母表:A–Z 和 a–z 字母、0–9 數字、加號和斜線。只要最後一組輸入位元組只有一到兩個而非三個,等號就會補完最後一組,使總字元數永遠是 4 的倍數。輸出中不含空白字元、不含換行、不含 MIME 風格的標頭,也不含資料 URL 前綴。

這種規範形式正是大多數生產環境解碼器所預期的。JSON 承載會經過代理伺服器、負載平衡器、請求記錄器和 JSON 格式化美化器,而這些層級中的任何一個都可能悄悄破壞空白或去除填補字元。尺寸膨脹也是可預測的,對於主體大小規劃很值得了解:以 10,000,000 位元組的輸入而言,轉換器會產生 3,333,333 個完整的四位元字元群組(3,333,333 × 4 = 13,333,332 個字元),再加上由最後一個剩餘位元組所產生的最後一組(2 個資料字元加 2 個填補字元 = 4 個字元),總計 13,333,336 個字元,大約 13.33 MB 的 ASCII 文字,對應 10 MB 的來源檔案。

設定檔字母表填補空白字元在 JSON 主體中是否安全?
標準 (RFC 4648 §4)A–Z、a–z、0–9、+、/必要 (=)是 — 規範選擇
Base64url (RFC 4648 §5)A–Z、a–z、0–9、-、_經常省略僅在明確轉換後
MIME 換行包裝標準必要每 76 個字元一個 CR/LF否 — 請先去除換行
資料 URL標準 + 前綴必要僅在 API 明確要求該前綴時

如果 API 文件規定了規範化填充標準以外的任何設定檔,請先完成編碼步驟,再將規範字串轉換為目標設定檔。編碼器不會自動為你選擇設定檔,上述四列中的任何一個都可以從同一個規範輸入,經由後續轉換產生。

將檔案編碼為 Base64 以供 Postman 使用

請在本機執行編碼,讓 Postman 收到一個可以原樣傳遞的字串。File to Base64 Converter 透過瀏覽器的 W3C File API 讀取檔案的位元組,在記憶體中建立一個 ArrayBuffer,對其進行編碼,並在不將任何內容上傳到伺服器的情況下顯示結果。

  1. 在與 Postman 同一個瀏覽器設定檔中開啟 File to Base64 Converter。
  2. 確認模式切換已設定為 File to Base64。反向模式接受 Base64 字串並產生一個可下載的檔案,這與 Postman 發送端所需的功能相反。
  3. 點擊檔案選擇器,選擇你打算傳送的檔案。頁面對來源檔案設有 10 MB 的上限;超過的檔案會被拒絕,因為位元組陣列、Base64 字串和呈現的輸出必須共存於同一個分頁中。
  4. 在複製任何內容之前,先確認瀏覽器回報的檔案名稱和大小。Postman 無法從編碼後的字串中還原原始檔名,而大小是送出前你唯一能做的健全性檢查。
  5. 等待編碼後的文字出現,然後複製整個區塊,包括任何結尾的等號。截斷的輸出會在伺服器端解碼為毀損的檔案。
  6. 切換到 Postman,將字串貼到環境變數、請求的 JSON 主體中,或在請求送出前於前置請求腳本中使用 pm.environment.set 指派它。
  7. 送出請求。當回應返回時,將轉換器切換到其 Base64-to-File 模式,貼上原始字串,設定檔名和 MIME 類型,並透過雜湊值或以其原生應用程式開啟,確認還原的檔案與來源逐位元組相符。

在 Postman 內部何處貼上 Base64 字串

Postman 為 Base64 檔案字串提供了三個實用的存放位置,每個位置適用於略有不同的情境。正確的選擇取決於該值是否在多個請求間重複使用、是否動態計算,或是否嵌入於單一 JSON 承載中。

位置最適用於設定位置顯示於
環境變數在集合中的多個請求間重複使用Manage Environments 分頁或一個 Set 請求任何欄位中的 {{image_base64}}
JSON raw 主體單一端點將檔案作為一個字串欄位接收Body 分頁 > raw > JSON請求預覽和線上承載
前置請求腳本動態內容、計算值或標頭注入請求的 Pre-request Script 分頁pm.environment、pm.variables 或標頭

對於一次性測試,請將字串直接貼到 JSON 主體中、放在引號內 — 例如 {"filename": "avatar.png", "content": "<paste here>"}。對於對相同端點的重複呼叫,請將其儲存在環境變數中一次,再以 {{avatar_base64}} 參考它,使請求保持可讀性,且編碼後的位元組不會在多個分頁中重複。當字串必須在執行階段組合而成時(例如從磁碟上讀取不同的檔案,或在簽署請求前將編碼後的值與時間戳結合),前置請求腳本就是正確的存放位置。

透過 Postman 傳遞 Base64 檔案時的陷阱

Postman 追蹤記錄中的大多數 Base64 失敗都來自一小撮可預測的錯誤。送出請求前請逐一檢查,因為下游的失敗模式往往是無聲的損毀,而非明確的 4xx 回應。

  • 不小心帶上了資料 URL 前綴。 data:image/png;base64, 這個前綴是一個容器,並非 Base64 字母表的一部分。多數生產環境的解碼器會拒絕它;如果 API 期望的是裸字串,請在貼上前先去除前綴。
  • 插入了空白字元或換行符號。 從聊天視窗或會自動換行的編輯器複製貼上,可能會引入空格、Tab 或換行符。轉換器中嚴格的解碼器會拒絕空白字元,因此同一份承載在伺服器上也會失敗。
  • 去除了等號。 填補字元是結構性的,而非裝飾性的。移除它會使總字元數不再是 4 的倍數,並使解碼器無法還原最後的位元組。
  • 截斷了字串。 多數編輯器只會複製可見的文字。如果編碼後的輸出長度超過你的剪貼簿或文字區,尾端會被悄悄地遺失,伺服器收到的檔案會比你預期的還小。
  • 輕信檔名和 MIME 提示。 Postman 和轉換器都允許你以檔名和 MIME 類型標記承載,但這些欄位只是提示。它們不會檢查位元組,也無法將 PNG 變成 JPEG。

在信任端點之前先驗證來回過程

一旦請求送出且伺服器回應,請勿假設檔案已完整送達另一端。來回檢查是確認位元組在經過 JSON 序列化、代理緩衝和伺服器端解碼後仍然倖存的唯一可靠方式。在 File to Base64 Converter 的 Base64-to-File 模式下開啟它,貼上原始字串,設定正確的檔名和 MIME 類型,然後下載暫存檔案。

如果位元組很重要,請使用像 SHA-256 這樣的密碼學雜湊函式,或透過平常讀取該格式的應用程式開啟它,來比較還原的檔案與來源。使用 SHA256 Hash Generator 對下載的檔案進行雜湊,並將其摘要與你從來源取得的雜湊進行比對。兩個摘要必須完全相符。如果不同,表示編碼後的字串已被截斷、填充不正確,或被中介層悄悄轉換,而 API 端點並不適合用來除錯這個問題,因為 Postman、代理伺服器和伺服器全都夾在檔案與最終位元組之間。

延伸閱讀:Base64 Decode Bulk Pastes Without Stack Overflow

延伸閱讀:Convert Any File to Base64 in Python Without Uploading