2012-01-26 157 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