PHP Curl 图片上传

标签 php curl image-uploading

如何通过cURL实现图片上传?

我被告知要使用curl_file_create,但它不起作用。

这是我手动(使用 Chrome)上传文件并查看原始结构时发布的数组:

Array
(
    [image] => Array
        (
            [0] => 377529090726537.jpg
        )

    [thumbnail_digest] => Array
        (
            [0] => EMPTYDIGEST
        )

    [digest_present] => Array
        (
            [0] => 0
        )

    [image_rotation] => Array
        (
            [0] => 0
        )
)

在我的 cURL 中我尝试过:

$cfile = curl_file_create('IMG_33071.jpg','image/jpeg','test_name');
$post_data = array(
'image' => $cfile,
);

但是运行脚本后,我收到此错误:

Catchable fatal error: Object of class CURLFile could not be converted to string in C:\Path\to\my\server\curl.php on line 144

图像与curl.php 文件位于同一文件夹中。 我的 php 版本是 5.5。

我也尝试过这个:

$cfile = curl_file_create('http://www.siteexample.com/path/to/my/file.jpg','image/jpeg','test_name');

但没有成功:(

我的结构:

//These are the post data username and password
$login_data = 'email='.$email.'&password='.$password.'&entrar=Entrar';

//Create a curl object
$login = curl_init();

//Set the useragent
$agent = $_SERVER["HTTP_USER_AGENT"];
//$agent = 'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:17.0) Gecko/20100101 Firefox/17.0';
curl_setopt($login, CURLOPT_USERAGENT, $agent);

curl_setopt($login, CURLOPT_SSL_VERIFYPEER, false);

//Set the URL
curl_setopt($login, CURLOPT_URL, $login_url );

//This is a POST query
curl_setopt($login, CURLOPT_POST, 1 );

//Set the post data
curl_setopt($login, CURLOPT_POSTFIELDS, $login_data);

//We want the content after the query
curl_setopt($login, CURLOPT_RETURNTRANSFER, 1);

//Follow Location redirects
curl_setopt($login, CURLOPT_FOLLOWLOCATION, 1);

/*
Set the cookie storing files
Cookie files are necessary since we are logging and session data needs to be saved
*/

curl_setopt($login, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($login, CURLOPT_COOKIEFILE, 'cookie.txt');

//Execute the action to login
$LoginResult = curl_exec($login);
echo $LoginResult;



    //create array of data to be posted
$post_data = array(
'name' => 'Name',
'email' => $email,
'email_confirm' => $email,
'phone' => '9999999999',
'passwd' => $password,
'passwd_ver' => $password,
'create' => '',
);


//traverse array and prepare data for posting (key1=value1)
foreach ( $post_data as $key => $value) {
    $post_items[] = $key . '=' . $value;
}


//create the final string to be posted using implode()
$post_string = implode ('&', $post_items);

var_dump($post_string);

curl_setopt($login, CURLOPT_URL, 'http://urltocurl.com/verify');
curl_setopt($login, CURLOPT_POST, false);
curl_setopt($login, CURLOPT_POSTFIELDS, $post_string);
curl_setopt($login, CURLOPT_TIMEOUT, 0);
$answer = curl_exec($login);
echo $answer;


if (curl_error($login)) {
    echo curl_error($login);
}

//close the connection
curl_close($login);

现在看一下开头的数组。

Array
    (
        [image] => Array
            (
                [0] => 377529090726537.jpg
            )

它是另一个数组中的一个数组。如何实现这一目标?也许curl_file_create正在工作,但它将图像发送到数组的错误位置。

最佳答案

看看我的例子,它应该适合你:

$ch = curl_init();
$data = array('name' => 'Foo', 'file' => '@/path/to/image.jpeg');
curl_setopt($ch, CURLOPT_URL, 'http://example.com/upload.php');
curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_exec($ch);

关于PHP Curl 图片上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33415648/

相关文章:

php - 执行快速入门时未找到 Twilio token

php - GET 参数是否可搜索引擎索引?

C# InstaSharper : Unable to upload photo: Unexpected character encountered while parsing value: S. 路径 '',第 0 行,位置 0

php - 使用php上传图片出错

php - 如何继续向该数组添加内容?

javascript - 使用自定义 url 进行内部页面导航

带有私钥身份验证的 SFTP 的 cURL

java - Curl 可以工作,但相应的 HttpConnection POST 请求失败,出现 400 错误

curl - 带有 CURL 的 HTTP2 给出 "Unsupported Protocol"

android - 上传截图到开发者控制台报错