1. 程式人生 > >CURL模擬表單post提交及相關常用引數的使用(包括提交表單同時上傳檔案)

CURL模擬表單post提交及相關常用引數的使用(包括提交表單同時上傳檔案)

    <form  action="doLogin" method="post">
        <input type="text"  name="username"  value="admin"/>
        <input type="password"  name="password"  value="admin"/>
        <button type="submit"  value="submit" />
    </form>
    那我們的curl就應該寫成這樣
    curl -d "username=admin&password=admin" "www.xxxx.com/doLogin"
    如果登陸後網頁被重定向,而我們想追蹤這個重定向的話可以加上-L引數(L必須大寫),表示追蹤重定向
    curl -L  -d "username=admin&password=admin" "www.xxx.com/doLogin"
二. 稍微複雜的情況:現在我們希望進行一些必須在登陸前提下的post請求,那就需要先儲存我們之前的成功登陸的cookie資訊,然後再攜帶登陸資訊進行post請求     1.儲存登陸cookie資訊到檔案可以通過以下2個選項中的任意一個實現     -c :儲存cookie資訊     -D:儲存整個header資訊,包括cookie
    示例:
    curl -c cookie.txt  -d "username=admin&password=admin" "www.xxx.com/doLogin"
    執行後會在你執行指令的目錄下生成一個cookie.txt檔案,當然你也可以指定該檔案的建立路徑,相對路徑絕對路徑皆可(如cookie.txt可以改成 /path/cookie.txt)     2.攜帶登陸資訊進行post請求需要使用-b選項         -b:指定使用哪個檔案         示例:
    curl -L -b cookie.txt -d "key=value" "url"
三. 模擬表單檔案上傳,相當於form表單中method="POST"和enctype="multipart/form-data"的情況         這個時候就需要用到-F選項了         curl -F "[email protected]" "url"         假目前我們的檔案上傳表單是這樣的:
    <form  action="upload" method="post" enctype="multipart/form-data">
        <input type="file"  name="myfile" />
        <button type="submit"  value="submit" />
    </form>
        我們想提交一個名為hellocurl.zip的檔案,該檔案在我們指令所在的根目錄下。         那我們的curl就是這樣的
    curl -F "[email protected]" "www.xxx.com/upload"
        如果上傳的檔案不止一個,可以寫多個-F "[email protected]"
    curl -F "[email protected]" -F "[email protected]" "www.xxx.com/upload"
        再來看一個更加貼近實際的情況:很多時候,我們的表單還會包含許多其他表單元素,如text,checkbox,select等等。         現在我們在上面表單的基礎上加入更多元素,變成下面這樣:
    <form  action="upload" method="post" enctype="multipart/form-data">
        <span style="color:#990000;"><input type="text"  name="filename"  value="hellocurl"/></span>
        <input type="file"  name="myfile" />
        <button type="submit"  value="submit" />
    </form>

        同時我們想提交hellocurl.zip檔案         這時候我們可能會想到加上-d         特別注意,這個時候我們不能同時使用-d和-F,這2個選項在curl中是兩種方式的請求,-d為application/x-www-url-encoded方式傳送post請求,而-F為multipart/form-data方式,         如果在一次curl中同時使用-d和-F選項會報Warning: You can only select one HTTP request!的警告,導致指令無法執行         這種情況下,現在網上很多給出的解決方案是通過增加-F的方式來解決         即:
    curl -F "filename=hellocurl" -F "[email protected]" "www.xxx.com/upload"
        但是我在一個spring mvc的專案中測試這個方法的時候發現,由於拿不到filename的值,無法繞過伺服器端的驗證,導致提交失敗         如果你也碰到類似的情況,可以嘗試下以下解決方法:
    curl -F "[email protected]" "www.xxx.com/upload?key1=value1&key2=value2"
        具體到當前的問題我們的curl就是:
    curl -F "[email protected]" "www.xxx.com/upload?filename=hellocurl"
        該方法親測通過,並且仍然是post的提交方式。         其他一些實用選項:         -v:檢視請求的整個完整的過程         -i:檢視請求頭資訊        -o:儲存響應結果到指定路徑的檔案中,如: curl -o tmp.txthttp://www.csdn.net   #儲存響應到tmp.txt

相關推薦

CURL模擬post提交相關常用引數的使用包括提交同時檔案

<form action="doLogin" method="post"> <input type="text" name="username" value="admin"/> <input type="password" nam

jquery的非同步提交非同步檔案jquery.form.js檔案注意事項

方法一:jquery的ajax方式,通過FormaData獲取表單資料 (1)這種方式只需要jquery-1.7.js外掛; (2)通過`jquery中的FormaData類: 自動搜尋表單資訊(表單內沒有name屬性的input不會被搜尋到),IE<=9

form提交資料的同時檔案程式碼示例

                              form表單提交資料的同時在表單中上傳檔案程式碼示例    一

Ajax提交包括檔案

頁面程式碼: <form id="form"> <input type="file" name="file"/> <input type="text" name="name"/&g

SpringBoot通過Aspect切面實現系統日誌Mapper異常攔截包括日誌設計

最近專案中需要記錄服務端介面訪問日誌,所以在開發過程中回顧了一下AOP相關的內容,特此記錄,便於日後查閱。 1、引入依賴 <!-- 引入aop--> <dependency> <groupId>org.springframework.boo

C# HttpClient Post 引數同時檔案 圖片 呼叫介面

// 呼叫介面上傳檔案 using (var client = new HttpClient()) { using (var multipartFormDataContent = new MultipartFormDataContent()) { var val

SpringMVC提交資料的同時檔案

1. 要點 html頁面中的表單必須是enctype=”multipart/form-data” 使用jquery-form的ajaxSubmit進行表單提交 使用SpringMVC進行處理,需要配置multipartResolver SpringMVC控制

c# 模擬提交post form 檔案、大資料內容

表單提交協議規定: 要先將 HTTP 要求的 Content-Type 設為 multipart/form-data,而且要設定一個 boundary 引數, 這個引數是由應用程式自行產生,它會用來識別每一份資料的邊界 (boundary), 用以產生多重資訊部份 (me

java模擬檔案,java通過模擬post方式提交實現圖片功能例項

package com.zdz.httpclient;import java.io.BufferedReader;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.File;import java.io.

curl post檔案(C++)

最近測試如何上傳檔案到伺服器。原來傳照片一致通過binary 形式傳檔案,或者把圖片base64編碼傳圖片。一致沒有用form-data 表單形式傳送資料,今天嘗試下如何使用libcurl提供的API上傳檔案。 Sample code: #include <

PHP:curl模擬form檔案

<form action="" method="post" enctype="multipart/form-data"> <input type="file" name="upload"> <buttion>submit</button> </f

使用CURL模擬檔案

有時需要使用PHP程式上傳檔案,其實使用PHP上傳檔案有多種方式,如果能完全模擬出HTML表單的效果這樣伺服器端就不用做任何程式碼的改動了,使用CURL完全可以實現,在PHP5.5之前使用的方式和PHP7.x、PHP5.6x中使用了新的方式,下面是程式碼示例:

PHP CURL 模擬POST請求 提交資料或檔案

$file = '/doucment/Readme.txt';$ch = curl_init();$post_data = array(     'loginfield' => 'username',     'username' => 'ybb',     'password' => '1

H5用FormData物件提交檔案

1、如何使用 use multipart/form-data when your form includes any <input type="file"> elements. 2、怎麼

ajax 請求後臺資料(使用FormData物件提交圖片

js <script type="text/javascript"> $(function(){ $('#submit').click

關於ajax提交file檔案型別的的一些例項遇到的問題和解決辦法

ajax提交的表單有兩種情況: 第一種:input type型別沒有file上傳檔案型別的表單 第二種:input type型別有file上傳檔案型別的表單 之所以分為兩種:是因為原生ajax是不能提交檔案的,因為ajax與後臺的通訊是通過字串的.   第一種無file型別表單的ajax上傳方式:

servlet文件2——復合提交數據獲取和文件

import bmi util 3.2 utf false ons quest pat 上傳文件時表單enctype屬性必須要更改為<enctype=‘multipart/form-data‘>;采用post提交表單,元素需要有name屬性; 利用第三方jar包

建立型:例模式相關應用

文章目錄 單例模式(Singleton) 優缺點 重點 懶漢式實現 執行緒不安全 synchronized關鍵字 雙重校驗鎖 靜態內部類 餓漢式實現 單例模式

php CURL模擬GET、POST請求。

/** * get * @param string $url 請求地址 */ function GetHttp($url){ // 關閉控制代碼 $curl = curl_init(); // 啟動一個CURL會話 curl_setopt($curl, CURLOPT_URL, $url); curl_set

使用form同時實現檔案提交文字資料

使用form表單同時實現上傳檔案和提交文字資料,此示例中在後臺將檔案上傳到阿里的oss儲存伺服器中 申請oss相關賬號: endpoint = "http://oss-cn-qingdao.aliyuncs.com"; accessKeyId = "key"; accessKeySecret = "secr