php7 curl上传图片
根据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);
?>
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: PHP5.6之后curl上传图片
- 下一篇: 8.2 虚拟机Save 与load