如何使用 curl codeigniter 上传图片?

How to upload images using curl codeigniter?

我在使用 curl 将照片上传到另一台服务器时遇到问题。而且我不知道为什么它对我不起作用。

    public function form_submit()
    {
        $curl_connection = 
  curl_init('http://example.com/form');

    $file = 'C:\xampp\htdocs\hot.jpg';
    
    curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl_connection, CURLOPT_POST, true);
    
    $post = array(
        "userfile" => "@$file;type=image/jpeg"
    );

    //vd($post);
    curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $post); 
    $response = curl_exec($curl_connection);
    echo $response;

    curl_close($curl_connection);
    }

和我的上传功能

    function do_upload_post()
{
$config = array(
'upload_path' => "./uploads2/",
'allowed_types' => "gif|jpg|png|jpeg|pdf",
'overwrite' => TRUE,
'max_size' => "2048000" // Can be set to particular file size , here it is 2 MB(2048 Kb)
);
$this->load->library('upload', $config);
if($this->upload->do_upload())
{
$data = array('upload_data' => $this->upload->data());
$this->load->view('form', $data);
}
else
{
$error = array('error' => $this->upload->display_errors());
$this->load->view('form', $error);
}
}

和我的表格

<body>
 
<?php echo form_open_multipart('ads/do_upload_post');?>
<?php echo "<input type='file' name='userfile' size='20' />"; ?>
<?php echo "<input type='submit' name='submit' value='upload' /> ";?>
<?php echo "</form>"?>
</body>

在本地,当我上传文件时,上传功能有效。但是从外面通过卷曲不是。

当您 post 使用 curl 的图像时,您进入了控制器,但是您在 $this->upload->[=21= 上也提到了您为图像使用的参数] ('userfile').

多个文件的 curl 函数 post

public function form_submit() {
        $curl_connection = curl_init ( 'http://example.com/form' );
    
        $photos = [
                 'img1.jpg',
                 'img2.jpg'
        ];
    
        $files = array();
        
        foreach ( $photos as $key => $photo ) {
            $cfile = new CURLFile ( '../' . $photo, 'image/jpeg', $key );
            $files['userfile'] [$key] = $cfile;
        }
        
        curl_setopt ( $curl_connection, CURLOPT_RETURNTRANSFER, true );
        curl_setopt ( $curl_connection, CURLOPT_POST, true );
        
        // vd($post);
        curl_setopt ( $curl_connection, CURLOPT_POSTFIELDS, $files );
        $response = curl_exec ( $curl_connection );
        echo $response;
        
        curl_close ( $curl_connection );
    }

控制器功能

function do_upload_post() {
    $config = array (
            'upload_path' => "./uploads2/",
            'allowed_types' => "gif|jpg|png|jpeg|pdf",
            'overwrite' => TRUE,
            'max_size' => "2048000" 
    );
    $this->load->library ( 'upload', $config );
    if($_FILES){
    $files = $_FILES;
    $cpt = count($_FILES['userfile']['name']);
    for($i=0; $i<$cpt; $i++)
    {           
        $_FILES['userfile']['name']= $files['userfile']['name'][$i];
        $_FILES['userfile']['type']= $files['userfile']['type'][$i];
        $_FILES['userfile']['tmp_name']= $files['userfile']['tmp_name'][$i];
        $_FILES['userfile']['error']= $files['userfile']['error'][$i];
        $_FILES['userfile']['size']= $files['userfile']['size'][$i];    

        $this->upload->initialize($this->set_upload_options());
        $this->upload->do_upload();
        $dataInfo[] = $this->upload->data();
    }
    
    
    } else {
        $error = array (
                'error' => $this->upload->display_errors () 
        );
        $this->load->view ( 'form', $error );
    }
}