Curl 无法在服务器上上传文件
Curl Not working to upload a file on server
我正在尝试使用 Api.And 在服务器上上传文件,它在本地主机上成功,工作正常,我可以轻松地将文件上传到服务器。
但是当我的代码在服务器上运行时,它没有获得 uploaded.I 授予我从中获取图像或文件的文件夹的读写权限。
这是我的卷曲代码:
$c = curl_init();
curl_setopt($c, CURLOPT_URL, $url);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
if($api_type == 2){
//$mm = array("message" => $message);
$message = str_replace("\n", "\n", $message);
$message = '{"message":"'.$message.'"}';
curl_setopt($c, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
));
curl_setopt($c, CURLOPT_POST, 1);
curl_setopt($c, CURLOPT_POSTFIELDS,$message);
}
if($api_type == 3 & $attachment != NULL){
$data = array( 'file' => '@'.self::basePath().'/../user_uploads/hipchat_image/'.$attachment);
curl_setopt($c, CURLOPT_HTTPHEADER, array(
'Content-Type: multipart/related',
));
curl_setopt($c, CURLOPT_POST, 1);
curl_setopt($c, CURLOPT_POSTFIELDS,$data);
}
return curl_exec($c);
你可以试试...
curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false);
取决于 PHP 版本,在 php 5.5 中默认为 false
,在 5.6+ 中默认为 true
...所以请检查本地和网络服务器版本 PHP.
PHP 7 去掉这个选项curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false);
上传文件必须使用CURLFile
接口
你可以这样写代码
$data = array('file'=>new CURLFile('/file/path'));
我正在尝试使用 Api.And 在服务器上上传文件,它在本地主机上成功,工作正常,我可以轻松地将文件上传到服务器。 但是当我的代码在服务器上运行时,它没有获得 uploaded.I 授予我从中获取图像或文件的文件夹的读写权限。 这是我的卷曲代码:
$c = curl_init();
curl_setopt($c, CURLOPT_URL, $url);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
if($api_type == 2){
//$mm = array("message" => $message);
$message = str_replace("\n", "\n", $message);
$message = '{"message":"'.$message.'"}';
curl_setopt($c, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
));
curl_setopt($c, CURLOPT_POST, 1);
curl_setopt($c, CURLOPT_POSTFIELDS,$message);
}
if($api_type == 3 & $attachment != NULL){
$data = array( 'file' => '@'.self::basePath().'/../user_uploads/hipchat_image/'.$attachment);
curl_setopt($c, CURLOPT_HTTPHEADER, array(
'Content-Type: multipart/related',
));
curl_setopt($c, CURLOPT_POST, 1);
curl_setopt($c, CURLOPT_POSTFIELDS,$data);
}
return curl_exec($c);
你可以试试...
curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false);
取决于 PHP 版本,在 php 5.5 中默认为 false
,在 5.6+ 中默认为 true
...所以请检查本地和网络服务器版本 PHP.
PHP 7 去掉这个选项curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false);
上传文件必须使用CURLFile
接口
你可以这样写代码
$data = array('file'=>new CURLFile('/file/path'));