curl post上傳檔案的“failed creating formpost data“錯誤
之前寫過一個php使用curl上傳檔案的程式碼,今天暴出了一個bug,curl錯誤資訊為"failed creating formpost data"
先說一下curl上傳檔案的過程吧
這裡有兩個地方需要注意:$file =array("upimg"=>"@/tmp/tmp.jpg");//檔案路徑,前面要加@,表明是檔案上傳. $url = 'http://localhosts/upload.php'; $ch = curl_init(); curl_setopt($ch ,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_POST,true); curl_setopt($ch,CURLOPT_POSTFIELDS,$file); curl_exec($ch);
1、$file必須是陣列
2、上傳檔案的路徑前面加@
3、路徑必須使用決定路徑
現在分析出現"failed creating formpost data" 錯誤原因
首先很快就定位到出現該問題的原因是路徑問題,分析了程式程式碼也沒發現什麼問題,始終不得解
最後通過錯誤日誌查得這個原因是因為curl post提交的資料引數中有一個引數內容是以@符號開頭的,
比如說要上傳/tmp/tmp.jpg,同時提交簡介,這樣引數值就是 path='/tmp/tmp.jpg', 輸入簡介desc='@test haha';
根據手冊上說curl post提交資料有兩種方式
1.curl($ch, CURLOPT_POSTFIELD, array('pic'=>'@/tmp/tmp.jpg', 'filename'=>'tmp');
2.curl($ch, CURLOPT_POSTFIELD, ' [email protected]/tmp/tmp.jpg&filename=tmp')
在有上傳檔案的情況下必須使用第一種方式
curl($ch, CURLOPT_POSTFIELD, array('pic'=>'@/tmp/tmp.jpg', 'filename'=>'tmp');
這樣如果第一字元是@符後面的內容均會被解析成地址,如果地址不存在就會丟擲該錯誤,就想簡介desc @test 這個路徑是不存在的
第二種方式只會將其當作普通字串處理
相關推薦
curl post上傳檔案的“failed creating formpost data“錯誤
之前寫過一個php使用curl上傳檔案的程式碼,今天暴出了一個bug,curl錯誤資訊為"failed creating formpost data" 先說一下curl上傳檔案的過程吧 $file =array("upimg"=>"@/tmp/tmp.jpg");
okhttp post 上傳檔案以及Multipart/form-data 的學習理解
在app 中,最基本的設定使用者頭像,需要進行頭像的圖片上傳,那就會使用到 post 進行上傳檔案的操作。必然要了解下 Multipart/form-data 的含義。以前在寫這部分程式碼的時候,不理解Headers.of(xxx)什麼意思,而且 裡面填寫的格式
Shell 程式設計用CURL 模擬POST 上傳檔案 解決417 Expectation
話不多說直接拋程式碼 curl -H "Expect:" -F "passport=monitor_134" -F "[email protected]/root/monitor/result/mid_1_rule_1.txt" http://192.168.1
C#中PUT和POST上傳檔案
HttpClient中上傳檔案 上一篇主要是提到了HttpClient幫助類,這次針對於上傳檔案進行補充,僅做記錄 public static string HttpUploadFile(string url, string path) {
C# WebApi Post上傳檔案大小限制
需要修改兩個地方 一般都在 web.config裡 <configuration> <system.web> <httpRuntime maxRequestLength="102400" executionTi
POST上傳檔案
原文:https://blog.csdn.net/xiaojianpitt/article/details/6856536 POST上傳檔案 最早的HTTP POST是不支援檔案上傳的,給程式設計開發帶來很多問題。但是在1995年,ietf出臺了rfc1867,也就是《RFC 186
ajax 上傳檔案,post上傳檔案,ajax 提交 JSON 格式的資料
ajax簡介 前後臺做資料互動 前後端做資料互動的方式(三種): (1)瀏覽器視窗輸入地址(get的方式)(2)form表單提交資料(3)ajax提交資料 特點 特點: (1)非同步 非同步與同步的區別:同步是請求發過去,要等著迴應;非同步不
httpclient post 上傳檔案
@RequestMapping(value = "/uploadChatPicture", method = { RequestMethod.GET, RequestMethod.POST }) @ResponseBody public Map<Stri
通過 HTTP POST 上傳檔案到伺服器
2. 上傳之前使用者無法預知上傳檔案的數目. 3. 因為是 ASP.NET 應用, 客戶端可能沒有裝 .NET Framework. 其實,我們知道.如果要跟 IE 端客戶檔案系統互動的話,程式碼必須在客戶端執行. 這個時候我們可以寫一個 Activex 控制元件來實現選擇資料夾和上傳. 一般我們常用兩種方
Httpclient 以multipart/form-data形式post上傳檔案及提交引數
在大學裡由於要做某些英語聽力作業,是在PC客戶端上的,而做完提交後顯示的答案又沒辦法複製,再重新填寫的話答案就消失了,所以懶得去記,好在答案圖片並不複雜,便想做一個可以識別出圖片中的英文的小軟體。因為我自己並沒有做OCR的經驗,於是我就到網上找可以線上識別文字的網站,找著找著
java、 http模擬post上傳檔案到服務端 模擬form上傳檔案
需求是這樣的: **1,前後端分離,前端對接pc軟體進行檔案同步的介面,後的springboot微服務進行檔案接收和處理。 2,軟體不能直接呼叫微服務的介面進行上傳,只能先走一下前端controller進行轉發過來()。 3,這樣就只能用httpclien
關於curl模擬上傳檔案
在用curl模擬上傳的時候遇到一個小問題,所以記錄下來: 在 curl 中設定表單,包括檔案上傳網上很多都是這樣的 $post_data = array( "file" => "@" . "檔案所在路徑" ); $
Android OkHttp Post上傳檔案並且攜帶引數
這裡整理一下 OkHttp 的 post 在上傳檔案的同時,也要攜帶請求引數的方法。 使用 OkHttp 版本如下: compile 'com.squareup.okhttp3:okhttp:3.4.1' 程式碼如下: protected void po
android http通過post上傳檔案和提交引數(通過拼裝協議)
HttpURLConnection conn = null; DataOutputStream outStream = null;try{ String BOUNDARY = "---------------------------7da2137580
HttpClient通過post上傳檔案和提交引數
//new一個DiskFileItemFactory型別的物件factory(檔案工廠) DiskFileItemFactory factory = new DiskFileItemFactory(); //為factory
OkHttp Post上傳檔案,攜帶引數
使用 OkHttp 版本如下: compile 'com.squareup.okhttp3:okhttp:3.4.1' public void upLoadFile(final
Android POST上傳檔案
/** * 上傳檔案到伺服器類 * * @author tom */public class UploadUtil { private static final String TAG = "uploadFile"; private static final i
OKhttp post上傳檔案
/** * java.io.FileNotFoundException: /storage/emulated/0/note01.md: open failed: EACCES (Permission denied) * 檔案未找到的異常....開啟失敗
OkHttp 3.0之後版本GET、POST請求以及POST上傳檔案的示例程式碼
首先說一下2.x到3.x關於POST請求的請求體類的改變: 在2.x中是 類名是:FormEncodingBuilder() 在3.x中是 類名是: FormBody,但是一般使用是 FormBody.builder() 目前網上很多示例程式碼都是
http使用post上傳檔案時,請求頭和主體資訊總結
HEADER: 寫道 ...... Content-Type: multipart/form-data; BODY: Content-type: multipart/form-data, boundary=AaB03x --AaB03x content-d