php怎么使用curl传输文件流
public function postFile()
{
$name = "filename";
$path = "./Resource/temp_pdf/";
$ext = ".pdf";
if (is_file($path . $name . $ext) && filesize($path . $name . $ext) != 0) {
$url = "http://test.api.com/index.php";
$post_data = array(
"foo" => "bar",
//@代表此字段属于文件,接收方只需用$_FILES便可接收文件
"upload" => "@" . $path . $name . $ext,
);
$res = httpRequest($url,$post_data);
var_dump($res);
//TODO::获取返回数据的动作
}
}
/**
* 请求远程地址
*
* @param string $url 请求url
* @param mixed $postFields 请求的数据
* @param string $referer 来源网址
* @param integer $timeOut 请求超时时间
* @param array $header 头部文件
* @return mixed 错误返回false,正确返回获取的字符串
* @author fengxu
*/
function httpRequest($url, $postFields = null, $referer = null, $timeOut = 300, $header = null)
{
if (empty($url) || !preg_match("#https?://[w@#$%*&=+-?;:,./]+#i", $url)) {
return false;
}
$isPost = empty($postFields) ? false : true;
$ch = curl_init();
if (is_null($header)) {
$header = array(
"Pragma" => "no-cache",
"Accept" => "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,q=0.5",
"User-Agent" => "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36",
);
}
$headers = array();
foreach ($header as $k => $v) {
$headers[] = $k . ": " . $v;
}
curl_setopt($ch, CURLOPT_URL, $url);
if ($isPost) {
//$postFields = http_build_query($postFields);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
}
curl_setopt($ch, CURLOPT_TIMEOUT, $timeOut);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($ch);
if ($response === false) {
throw new Exception(curl_error($ch), "500");
}
return $response;
}声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
