牛骨文教育服务平台(让学习变的简单)
博文笔记

php7 curl上传图片

创建时间:2017-02-21 投稿人: 浏览次数:1255

根据php版本不同,curl模拟表单上传的方法不同
php5.5之前

$curl = curl_init(); 
if (defined("CURLOPT_SAFE_UPLOAD")) {
    curl_setopt($curl, CURLOPT_SAFE_UPLOAD, false);
}
$data = array("file" => "@" . realpath($path));//‘@’ 符号告诉服务器为上传资源
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, 1 );
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_USERAGENT,"TEST");
$result = curl_exec($curl);
$error = curl_error($curl);

php5.5之后,到php7

$curl = curl_init();
curl_setopt($curl, CURLOPT_SAFE_UPLOAD, true);
$data = array("file" => new CURLFile(realpath($path)));
url_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, 1 );
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_USERAGENT,"TEST");
$result = curl_exec($curl);
$error = curl_error($curl);

下面提供一个兼容的方法:

$curl = curl_init();
if (class_exists("CURLFile")) {
  curl_setopt($curl, CURLOPT_SAFE_UPLOAD, true);
$data = array("file" => new CURLFile(realpath($path)));//>=5.5
} else {
  if (defined("CURLOPT_SAFE_UPLOAD")) {
    curl_setopt($curl, CURLOPT_SAFE_UPLOAD, false);
  }
  $data = array("file" => "@" . realpath($path));//<=5.5
}

curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, 1 );
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_USERAGENT,"TEST");
$result = curl_exec($curl);
$error = curl_error($curl);

$path:为待上传的图片地址

$url:目标服务器地址
例如

$url="http://localhost/upload.php";
$path = "/bg_right.jpg"

upload.php示例:

<?php
    file_put_contents(time().".json", json_encode($_FILES));
    $tmp_name = $_FILES["file"]["tmp_name"];
    $name = $_FILES["file"]["name"];
    move_uploaded_file($tmp_name,"audit/".$name); 
?>
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。