2011-06-04 231 views
0

我上傳REMOTE服務器上的文件的代碼似乎沒有工作。當從鏈接上的瀏覽器上傳文件時,csv文件的所有內容都被提交到數據庫。這裏是代碼:上傳文件不起作用 - cURL&PHP

function postToDB() 
{ 
    $fp = fopen('./errorLog.txt', 'w+'); 
    $csvFile = fopen('./myFile.csv', 'r'); 
    $url="http://abc.com/UploadCSVLogin/"; 

    $ch=curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 100); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0); 
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_USERPWD, ":password"); 
    curl_setopt($ch, CURLOPT_PUT, true); 

    curl_setopt($ch, CURLOPT_INFILE, $csvFile); 
    curl_setopt($ch, CURLOPT_VERBOSE, true); 
    curl_setopt($ch, CURLOPT_STDERR, $fp); 

    if (!curl_exec($ch)) 
    echo "Error: ".curl_error($ch); 
    else 
    echo "Success"; 
    curl_close($ch); 
} 

奇怪的是,代碼回聲「成功」。但是,即使「成功」被迴應,我也沒有發現上述代碼發生數據庫更新。

任何人都可以幫我找到問題嗎?

回答

1

這是因爲您提交原始CSV數據,並且它沒有以表單發佈數據的形式編碼到field = value對中。處理這個最簡單的方法是在服務器上使用:

$csvfile = file_get_contents("php//input"); 
+0

我沒有得到你。你的意思是我不能從我的代碼發佈? – 2011-06-04 00:40:06

+0

你可以,但你需要閱讀RFC 2616 http://www.w3.org/Protocols/rfc2616/rfc2616.html – Geoffrey 2011-06-04 01:28:18

+0

也自從你發佈一個文件,你需要看看RFC 1341 - http:///www.w3.org/Protocols/rfc1341/7_2_Multipart.html – Geoffrey 2011-06-04 01:31:18