【问题标题】:CURL uploads blank file by FTPCURL 通过 FTP 上传空白文件
【发布时间】:2012-01-27 02:58:02
【问题描述】:

我正在使用这个 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;

【问题讨论】:

  • 删除了 html5 标签,因为它不相关。

标签: php curl


【解决方案1】:

第 3 行,现在它说:

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

改成:

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

【讨论】:

    【解决方案2】:

    您没有检查初始文件上传是否成功。检查远程文件名是否存在表明它已上传。确保上传成功的 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

    【讨论】:

    • 我不认为这是正确的答案,但这是非常有效的观点
    猜你喜欢
    • 2011-05-07
    • 2012-04-26
    • 2013-03-24
    • 1970-01-01
    • 1970-01-01
    • 2018-01-05
    • 2012-02-22
    • 1970-01-01
    相关资源
    最近更新 更多