CURL загружает пустой файл по FTP - PullRequest
1 голос
/ 26 января 2012

Я использую этот скрипт 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;

Ответы [ 2 ]

4 голосов
/ 26 января 2012

Строка 3, прямо сейчас написано:

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

Измените его на:

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

1 голос
/ 26 января 2012

Вы не проверяли, была ли успешной первоначальная загрузка файла. Проверка на наличие удаленного имени файла НЕ указывает на то, что оно загружено. 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...