若要在 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}} 參考的環境變數,或在請求送出前於前置請求腳本中指派的值來傳遞它。

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