【问题标题】:upload image error with php class and curl使用 php 类和 curl 上传图像错误
【发布时间】:2015-01-07 15:52:36
【问题描述】:

嗨,我有这个代码 uploader.php:

class Uploader 
    {
        var $filePath;
        var $uploadURL;
        var $formFileVariableName;
        var $postParams = array ();

        function Uploader($filePath, $uploadURL, $formFileVariableName, $otherParams = false) 
        {
            $this->filePath = $filePath;
            $this->uploadURL = $uploadURL;
            if(is_array($otherParams) && $otherParams != false) 
            {
                foreach($otherParams as $fieldName => $fieldValue) 
                {
                    $this->postParams[$fieldName] = $fieldValue;
                }
            }
            $this->postParams[$formFileVariableName] = "@" . $filePath;
        }

        function UploadFile() 
        {
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $this->uploadURL);
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $this->postParams);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            $postResult = curl_exec($ch);

            if (curl_errno($ch)) 
            {
                print curl_error($ch);
                print "Unable to upload file.";
                exit();
            }
            curl_close($ch);

            return $postResult;
        }
    }

我是这样使用的:

require('uploader.php');

$upload_server = "http://developers.mytech.com.mx/files/api/upload.php";
     $file = $_FILES['archivo']['tmp_name'];
$archivo = $file;
$extension = pathinfo($archivo, PATHINFO_EXTENSION);
$nombre_base = basename($archivo, '.'.$extension);
    $upload = new Uploader($file, $upload_server,'file', array('api_key' => 'ic00n6yokd'));
    $result = $upload->UploadFile();
    if(preg_match("/upload_failed/", $result)){ echo "Upload failed."; }
    if(preg_match("/error_tamano/", $result)){ echo "Archivo muy grande."; }
    if(preg_match("/api_invalida/", $result)){ echo "Invalid API Code."; }
    if(preg_match("/error_type/", $result)){ echo "Archivo no valido."; }
    if(preg_match("/upload_success/", $result)){ echo $result; }

但问题是上传的是 tmp_name 作为文件而不是图像 但如果我改变这一行: $file = $_FILES['archivo']['tmp_name'];到 $file = $_FILES['archivo']['name'];

我得到这个错误:创建表单数据失败

我的问题是如何正确使用课程,以便我可以上传图片

【问题讨论】:

    标签: php


    【解决方案1】:

    也许您应该为图像数据指定标题 试试这个:

    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'content-type: image/png'
     ));
    

    【讨论】:

    • 我尝试将文件移动到服务器,然后当文件已经上传到外部服务器时,取消图像与服务器的链接
    猜你喜欢
    • 2011-11-14
    • 1970-01-01
    • 2016-03-31
    • 2022-10-15
    • 2023-03-17
    • 2013-01-29
    • 1970-01-01
    • 2019-01-25
    • 1970-01-01
    相关资源
    最近更新 更多