2012-05-14 61 views
0

我想弄清楚如何讓服務器在一個步驟中通過HTTP post接受文件 - 而不需要經歷創建html表單的所有麻煩,提交按鈕。從一個HTTP POST接受文件上傳的PHP

我知道如何寫一個PHP/HTML包,完成以下操作:

  • 用戶指向他們的本地瀏覽器的網址與上傳表單
  • 用戶選擇一個本地文件並點擊「上傳」按鈕上表格
  • 服務器接受該文件並將其放在指定的位置
我創建了一個HTML文件,其中包含一個表單,當單擊提交按鈕時調用php腳本。

我想此更改爲以下:

  • 從命令行中,用戶執行以下命令: 「捲曲-X POST @somefile HTTP:/ /爲myhost/getter.php」
  • 服務器(myhost)接受該文件並將其放置在指定的位置
換言之,我想直接將文件發送到php腳本,而無需通過表單步驟。

非常感謝任何指導。

+0

這是很容易做到。如果您可以製作張貼到腳本的表單,則可以直接使用curl來調用該腳本。你爲什麼認爲這有什麼不同? – Halcyon

+0

我絕對同意應該可以直接調用腳本。魔鬼在細節中... :)我一直沒有能夠得到這個工作,因爲直接調用腳本時,$ _FILE數組沒有正確填充。 – user1394647

+0

'$ _FILES' *數組。 Apache應該爲你填充它。如果沒有,也許你沒有在cURL中使用正確的內容類型?它應該是'multipart/form-data'。 – Halcyon

回答

1

http://curl.haxx.se/docs/httpscripting.html

4.3文件上載POST

<form method="POST" enctype='multipart/form-data' action="upload.cgi"> 
    <input type=file name=upload> 
    <input type=submit name=press value="OK"> 
</form> 

命令行等效:

curl --form [email protected] --form press=OK [URL] 
+0

非常酷,捲曲有這個選項 - 謝謝!最終,我將不得不接受來自服務的數據而不是捲曲,所以我需要在服務器端解決這個問題。 – user1394647

+0

如果您的'$ _FILE'數組未填充,請確保您的表單中包含'ententype ='multipart/form-data'',並且php.ini中的post_max_size/upload_max_filesize指令足夠高(post_max_size> = 1.33 * upload_max_filesize) –

+0

包含enctype似乎是這裏的關鍵。謝謝您的幫助。 – user1394647