Я пытаюсь загрузить файл на сервер с помощью Api. И он успешно работает на локальном хосте, он работает нормально, я могу легко загрузить файл на сервер.
Но когда мой код отправляется на сервер, он не загружается. Я даю разрешение на чтение и запись в папку, откуда я загружаю изображения или файлы.
это мой код curl:
$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, по умолчанию это false
в php 5.5 и true
в 5.6+ … так проверьте локальную и веб-версию PHP.
PHP 7 удаляет эту опциюcurl_setopt($ch, CURLOPT_SAFE_UPLOAD, false);
CURLFile
интерфейс должен быть использован для загрузки файлов.
Вы можете написать код, подобный этому
$data = array('file'=>new CURLFile('/file/path'));