HTTP 請求時傳遞多部分表單數據

HTTP 請求時傳遞多部分表單數據(multipart/form-data)

--data-raw $'------demo11111\r\nContent-Disposition: form-data; name="Filedata"; filename="截屏2025-02-27 15.45.46.png"\r\nContent-Type: image/png\r\n\r\n\r\n------demo11111\r\nContent-Disposition: form-data; name="type"\r\n\r\n5\r\n------demo11111--\r\n' 

--data-raw選項用于直接傳遞原始數據,而多部分表單數據格式通常用于上傳文件或提交包含多種類型數據的表單

特殊符號解釋

$
在 Bash 等 shell 中,$'...' 是一種 ANSI C 引號字符串的語法。這種語法允許在字符串中使用 C 風格的轉義序列,比如 \r(回車符)、\n(換行符)、\t(制表符)等。例如,$'\r\n' 會被解釋為回車換行符,這在多部分表單數據中是必要的,因為它遵循嚴格的換行格式要求。
\r\n
\r\n 是回車換行符,在 HTTP 協議和多部分表單數據中,它用于分隔不同的部分和字段。回車換行符是多部分表單數據格式的重要組成部分,用于明確每個字段和數據塊的邊界。

多部分表單數據結構分析

多部分表單數據由多個部分組成,每個部分之間用分隔符(這里是 ------demo11111)分隔,每個部分包含以下內容:
分隔符:用于區分不同的表單字段或文件
內容描述頭:包含字段名、文件名、內容類型等信息
空行:由 \r\n 表示,用于分隔內容描述頭和實際數據

數據內容:實際要上傳的數據。

示例拆解

------demo11111
Content-Disposition: form-data; name="Filedata"; filename="截屏2025-02-27 15.45.46.png"
Content-Type: image/png<文件內容>
------demo11111
Content-Disposition: form-data; name="type"5
------demo11111--

第一部分:上傳一個名為 截屏2025-02-27 15.45.46.png 的 PNG 圖片,字段名為 Filedata
第二部分:上傳一個名為 type 的字段,值為 5
結束標記:最后以 ------demo11111-- 表示表單數據結束

示例

假設要向 http://example.com/upload 發送上述多部分表單數據,完整的 curl 命令可能如下:

curl -X POST \--data-raw $'------demo11111\r\nContent-Disposition: form-data; name="Filedata"; filename="截屏2025-02-27 15.45.46.png"\r\nContent-Type: image/png\r\n\r\n<文件內容>\r\n------demo11111\r\nContent-Disposition: form-data; name="type"\r\n\r\n5\r\n------demo11111--\r\n' \http://example.com/upload

這樣,curl 就會將多部分表單數據發送到指定的服務器地址

demo11111 是通用的嗎?

并不是通用的

在使用多部分表單數據(multipart/form-data)進行文件上傳或表單提交時,需要一個邊界字符串(boundary string)來分隔不同的表單字段或文件數據。這個邊界字符串是隨機生成的,目的是確保它不會在表單數據中意外出現,從而避免混淆不同的部分。
不同的客戶端(如瀏覽器、curl 等工具)在發起請求時,都會生成自己唯一的邊界字符串。例如,在 Chrome 瀏覽器中,當使用 HTML 表單上傳文件時,瀏覽器會自動生成一個邊界字符串;使用 curl 時,如果手動指定多部分表單數據,也需要提供一個邊界字符串,或者讓 curl 自動生成。

非通用性原因

唯一性要求:為了準確區分多部分表單數據中的各個部分,邊界字符串必須是唯一的。如果使用通用的邊界字符串,那么在數據中就有可能意外出現與邊界字符串相同的內容,導致服務器無法正確解析表單數據。

隨機生成機制:不同的請求在不同的時間、不同的客戶端發起,每次都會生成不同的邊界字符串。例如,你在兩次不同的 curl 請求中,生成的邊界字符串大概率是不一樣的。

bash
curl -X POST \--data-raw $'------WebKitFormBoundaryabc123\r\nContent-Disposition: form-data; name="Filedata"; filename="test.png"\r\nContent-Type: image/png\r\n\r\n<文件內容>\r\n------WebKitFormBoundaryabc123--\r\n' \http://example.com/upload

示例 2

curl -X POST \--data-raw $'------WebKitFormBoundaryxyz789\r\nContent-Disposition: form-data; name="Filedata"; filename="test2.png"\r\nContent-Type: image/png\r\n\r\n<文件內容>\r\n------WebKitFormBoundaryxyz789--\r\n' \http://example.com/upload

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/70913.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/70913.shtml
英文地址,請注明出處:http://en.pswp.cn/web/70913.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java基礎關鍵_013_日期處理

目 錄 一、傳統 API 1.System.currentTimeMillis() &#xff08;1&#xff09;說明 &#xff08;2&#xff09;實例 2.構造方法 &#xff08;1&#xff09;說明 &#xff08;2&#xff09;無參構造 &#xff08;3&#xff09;有參構造 3.日期格式化 &#xff08;1&am…

51單片機中reg52.h與regx52.h在進行位操作時的不同

reg52.h中不能使用例如 P2_0;這樣的定義 而只能使用 P2^0;這樣的定義 但是都不可以對位進行直接賦值操作&#xff1b; 而 regx52.h中可以使用 P2_0和P2^0&#xff1b;但是只有使用下劃線的才可以對位進行賦值操作 例如P2_0 1; 但不可以是P2^0 1; 在 C 語言中&#xff0c;…

基于Rook的Ceph云原生存儲部署與實踐指南(上)

#作者&#xff1a;任少近 文章目錄 1 Ceph環境準備2 rook部署ceph群集2.1 Rook 幫助地址2.2 安裝ceph2.3 獲取csi鏡像2.4 Master參加到osd2.5 設置默認存儲 3 Rook部署云原生RBD塊存儲3.1 部署storageclass資源3.2 部署WordPress使用RBD3.3 WordPress訪問 4 Rook部署云原生RGW…

FastExcel與Reactor響應式編程深度集成技術解析

一、技術融合背景與核心價值 在2025年企業級應用開發中&#xff0c;大規模異步Excel處理與響應式系統架構的結合已成為技術剛需。FastExcel與Reactor的整合方案&#xff0c;通過以下技術協同實現突破性性能&#xff1a; 內存效率革命&#xff1a;FastExcel的流式字節操作與Re…

DeepSeek R1/V3滿血版——在線體驗與API調用

前言&#xff1a;在人工智能的大模型發展進程中&#xff0c;每一次新模型的亮相都宛如一顆投入湖面的石子&#xff0c;激起層層波瀾。如今&#xff0c;DeepSeek R1/V3 滿血版強勢登場&#xff0c;為大模型應用領域帶來了全新的活力與變革。 本文不但介紹在線體驗 DeepSeek R1/…

Spring Data JPA 中的分頁實現:從 BasePage 到 Pageable

文章目錄 Spring Data JPA 中的分頁實現&#xff1a;從 BasePage 到 Pageable背景&#xff1a;為什么需要分頁&#xff1f;認識 BasePage 類深入 toPageable() 方法1. 處理頁碼和頁面大小2. 處理排序方向3. 處理排序字段4. 生成 Pageable 對象 實戰&#xff1a;如何使用 BasePa…

Android Studio 新版本Gradle發布本地Maven倉庫示例

發布代碼到JitPack示例&#xff1a;https://blog.csdn.net/loutengyuan/article/details/145938967 以下是基于 Android Studio 24.2.2&#xff08;Gradle 8.10.2 AGP 8.8.0 JDK17&#xff09; 的本地 Maven 倉庫發布示例&#xff0c;包含aar和jar的不同配置&#xff1a; 1.…

python量化交易——金融數據管理最佳實踐——qteasy創建本地數據源

文章目錄 qteasy金融歷史數據管理總體介紹本地數據源——DataSource對象默認數據源查看數據表查看數據源的整體信息最重要的數據表其他的數據表 從數據表中獲取數據向數據表中添加數據刪除數據表 —— 請盡量小心&#xff0c;刪除后無法恢復&#xff01;&#xff01;總結 qteas…

Android中使用Robolectric測試點擊事件(不需要手機)

文章目錄 一、前言二、簡單示例三、參考文檔 一、前言 Robolectric 是一個由 Google 維護的開源 Android 測試框架&#xff0c;它允許你以 Android 運行時環境運行單元測試。 Robolectric 提供了一個模擬 Android 運行時環境&#xff0c;允許你測試你的代碼是否正確地使用 And…

Spring Boot 接口 JSON 序列化優化:忽略 Null 值的九種解決方案詳解

一、針對特定接口null的處理&#xff1a; 方法一&#xff1a;使用 JsonInclude 注解 1.1 類級別&#xff1a;在接口返回的 ?DTO 類或字段? 上添加 JsonInclude 注解&#xff0c;強制忽略 null 值&#xff1a; 類級別&#xff1a;所有字段為 null 時不返回 JsonInclude(Js…

ds回答-開源llm應用開發平臺

以下是幾個著名的開源 LLM 應用開發平臺&#xff0c;涵蓋不同場景和技術特點&#xff1a; 1. Dify 特點&#xff1a;低代碼 / 無代碼開發、支持 RAG 檢索、Agent 智能體、模型管理、LLMOps 全流程優化。核心功能&#xff1a;可視化工作流編排、數百種模型兼容&#xff08;如 GP…

LDR6020 PD3.1 協議芯片在特定設備中的應用

在電子設備互聯互通的時代&#xff0c;芯片技術成為提升設備性能與功能的關鍵驅動力。LDR6020 PD3.1 協議芯片以其出色的性能&#xff0c;在 TYPE-C 臺式顯示器 / 便攜顯示器、一拖二快充線以及手機電腦轉接器等設備中展現出獨特價值&#xff0c;為用戶帶來更便捷、高效的使用體…

wzl-django學習

####################################################總的urls.py from django.contrib import admin from django.urls import path,include, re_path from django.views.static import serve from django.conf import settings from drf_yasg import openapi from drf_yas…

python -ssh學習

def exe_sshcmd(ip,username,userpswd,port,cmd): """ 功能&#xff1a;SSH登錄到指定設備&#xff0c;并執行對應的命令 入參&#xff1a;前四項為ssh登錄shell的ip和port&#xff0c;具備管理員權限的用戶名和密碼&#xff0c; cmd可以…

PDF處理控件Aspose.PDF教程:使用 Python 將 PDF 轉換為 TIFF

TIFF文件是高質量圖像的首選。它們廣泛用于印刷、存檔和圖形設計。企業通常需要轉換PDF文檔以獲得更好的兼容性。了解如何以編程方式執行此轉換可以節省時間和資源。在這篇教程中&#xff0c;我們將探討如何使用 Python 將 PDF 轉換為 TIFF。 本文涵蓋以下主題&#xff1a; P…

服務器IPMI用戶名、密碼批量檢查

背景 大規模服務器部署的時候&#xff0c;少不了較多的網管和監測平臺&#xff0c;這些平臺會去監控服務器的性能、硬件等指標參數&#xff0c;為了便于管理和控制&#xff0c;則需要給服務器IPMI帶外管理添加較多的用戶&#xff0c;這就需要對較多的服務器檢查所對應的IPMI用…

< 自用文兒 > Gobuster 暴力掃描工具與 SecLists 安全測試詞表集合

Ethice 道德問題 GFW 的保護下&#xff0c;很多的設備操作系統是停留在更老的版本&#xff0c;應用軟件也是&#xff0c;因此很多的漏洞沒有被修復。通訊沒有使用加密&#xff0c;例如網頁沒有使用 HTTPS 網站很多。幾乎是半裸的在網絡上等著被食。 不做惡是下限。 環境&…

【Cadence射頻仿真學習筆記】2.4GHz低噪放LNA仿真設計

課程分為3個部分&#xff0c; 一、LNA結構與噪聲優化方法 噪聲優化的方法是&#xff1a;限定功耗的噪聲和功率同時匹配噪聲匹配和功率匹配一般不會同時達到&#xff0c; 對于PCSNIM結構的噪聲分析&#xff0c;我們只需要了解與哪些參數有關優化思路是&#xff1a;1.信號源阻抗…

【洛谷入門賽】B4042 順序結構 202410 場

題意 給你一個變量 a a a&#xff1a;小 Y 會讓 a a a 先加 5 5 5 再把它們的和乘 3 3 3 最后輸出&#xff1b;小 L 會讓 a a a 先乘 3 3 3 再加 5 5 5 最后輸出。 要求出小 Y 和小 L 分別會輸出什么東西。 思路 這道題按照題目意思模擬就可以了&#xff0c;重點是考…

Android13修改多媒體默認音量

干就完了! 設置音量為最大音量,修改如下: /framework/base/media/java/android/media/AudioSystem.java/** hide */public static int[] DEFAULT_STREAM_VOLUME new int[] {4, // STREAM_VOICE_CALL7, // STREAM_SYSTEM5, // STREAM_RING-5, // STREAM_MUSIC15, // STREAM…