我只是有一個問題,我需要使用PHP中的curl來設置Content-Length標頭來製作multipart/form-data POST HTTP請求。使用cURL PHP進行HTTP raw POST請求multipart/form-data時,如何正確設置Content-Length標題?
例如,我有一個PHP腳本,這使得捲曲POST上傳到服務器上的圖像,該請求的HTTP實體主體的內容是這樣的:
------Boundary123
Content-Disposition: form-data; name="files[]"; filename="image.png"
Content-Type: image/png
... contents of image.png
------Boundary123--
我做這樣的事情這個:
$bodiEntity = "--".$boundary."\r\n".
'Content-Disposition: form-data; name="files[]"; filename="'.$fileName.'"'."\r\n".
'Content-Type: img/png'."\r\n\r\n".
file_get_contents($fileName)."\r\n". // binary contents of file
"--".$boundary."--\r\n";
但是然後,我應該爲Content-Length頭設置哪個值?我知道,它是實體主體的字節數,但我應該如何處理「\ r \ n」? 我的意思是,如果我做strlen("\r\n")
我得到2作爲返回值,但我想這應該是1(意思)一個字節處理髮送multipart/form-data時,我是對嗎?
所以我應該只使用strlen()
像邊界線,內容處置,Content-Type和計數爲「\ r \ n」作爲單個字符,並使用filesize()
獲取文件的文件大小以字節爲單位,然後串總結所有值以獲取Content-Length頭的最終值?或者,我應該像PHP那樣只將「\ r \ n」計爲2個字符?
感謝您的關注!
'cURL'不會自動爲您做? – Barmar
我不知道,是嗎? – tonix