Есть древний скрипт для выгрузки в интернет магазин, там такой код для загрузки изображений на сервер:
foreach($a as $k=>$r) {
$path = str_replace("/","\\", $r['path']);
$pict_at = '\\\\images4\\'.$path;
if (file_exists($pict_at)) {
echo '^'.$r['path']."\r\n";
$pd = array();
$pd['ta'] = 'up_pict';
$pd['path'] = $r['path'];
if (function_exists('curl_file_create')) { // php 5.5+
$cFile = curl_file_create($pict_at);
} else { //
$cFile = '@' . realpath($pict_at);
}
$pd['file'] = $cFile;
sync_ta($pd);
echo "\t".' +'."\r\n";
} else {
$s.= $r['path']."\r\n";
echo "\t".'#'.$r['path']."\r\n";
}
}
function sync_ta($pd) {
global $host;
$pd['skey'] = ''; // сертификат-пароль
echo date('H:i:s')." post to ".$host."\r\n";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://'.$host.':80/sync/index.php');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $pd);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 180);
$s = curl_exec($ch);
$i = curl_getinfo($ch);
curl_close($ch);
return ($i['http_code']==200) ? $s : false;
}
В $cFile получается следующий массив:
class CURLFile#3 (3) {
public $name =>
string(72) "\\images4\w20230134_красный_add01_29.jpg"
public $mime =>
string(0) ""
public $postname =>
string(0) ""
}
На сервер при этом прилетает пустой массив $_FILES, но если в названии цвета указаны на английском, как в других товарах, все выгружается нормально.
Поменять название цветов нельзя в новой коллекции, подскажите может кто сталкивался? У меня нагуглить не получилось, с подобной проблемой сталкиваюсь впервые. Выгрузка идет с Windows на Linux, везде utf8.
Я же правильно понимаю что curl при отправке берет указанный в ссылке файл и отправляет его на сервер удаленный как файл, но не понимаю почему ему русские буквы не нравятся в названии файла.