2011年5月16日 星期一

[PHP] 使用 cURL POST 上傳檔案

好久沒寫 PHP 了,連自己工作的機器上都忘了安裝 orz 這半年一直都在寫 python 啊,這次使用 PHP 來模擬短時間的大量連線。


在 Ubuntu 的安裝:


$ sudo apt-get install php5-cli php5-curl


之前只有透過 curl 使用 POST 送出 text 類的資料,這次想要模擬檔案上傳,一開始使用:


$POST_DATA = array( 'my_file' => file_get_contents( '/path/my_file' ) );


但還是送不出去,最後才發現要用:


$POST_DATA = array( 'my_file' => '@/path/my_file' );


大概是這樣才會被轉換使用 multipart/form-data 的方式,完整範例:


<?php

        $url = 'http://host/upload';

        $ch = curl_init();
        curl_setopt( $ch, CURLOPT_URL, $url );
        curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
        curl_setopt( $ch, CURLOPT_POST, true );
        curl_setopt( $ch, CURLOPT_POSTFIELDS, 
array(
               //'my_file' => file_get_contents( '/path/my_file_data' ) 
               'my_file' => '@/path/my_file_data' 
)
);  
        echo curl_exec( $ch );
        curl_close( $ch );
?>


沒有留言:

張貼留言