2012-01-26 96 views
1

我正在使用此捲曲腳本嘗試通過FTP上傳用戶選擇的文件。它將文件上傳到服務器,但它們都是空白的。這是爲什麼發生?CURL通過FTP上傳空白文件

if (!empty($_FILES['userfile']['name'])) { 
    $ch = curl_init(); 
    $localfile = $_FILES['upload']['tmp_name']; 
    $fp = fopen($localfile, 'r'); 
    curl_setopt($ch, CURLOPT_URL, 'ftp-addy-here'.$_FILES['userfile']['name']); 
    curl_setopt($ch, CURLOPT_UPLOAD, 1); 
    curl_setopt($ch, CURLOPT_INFILE, $fp); 
    curl_setopt($ch, CURLOPT_INFILESIZE, filesize($localfile)); 
    curl_exec ($ch); 
    $error_no = curl_errno($ch); 
    curl_close ($ch); 
     if ($error_no == 0) { 
      $error = 'File uploaded succesfully.'; 
     } else { 
      $error = 'File upload error.'; 
     } 
} else { 
     $error = 'Please select a file.'; 
} 

echo $error; 
+1

刪除了html5標記,因爲它不相關。 –

回答

4

3號線,現在它說:

$localfile = $_FILES['upload']['tmp_name'];

更改它到:

$localfile = $_FILES['userfile']['tmp_name'];

+0

仍然沒有工作 – lodkkx

1

您沒有檢查初始文件上傳是否成功。檢查是否存在遠程文件名是NOT表示它已上傳。以保證工作的上傳的100%可靠的方法是

if ($_FILES['userfile']['error'] === UPLOAD_ERR_OK) { 
    ... ftp stuff ... 
} else { 
    die("Upload failed with error code: {$_FILES['userfile']['error']}"); 
} 

的代碼/常量記錄在這裏:http://php.net/manual/en/features.file-upload.errors.php

+1

我不認爲這是正確的答案,但它是非常有效的點 – Basic