php curl загрузка файлов, проблема в том, что после загрузки неверное имя файла и расширение - PullRequest
0 голосов
/ 02 июня 2019

Я хочу отправить форму с вводом: файл для отправки информации и загрузки некоторых (от 2 до 10) файлов. когда форма отправляет информацию, отправляется на главный хост (форма: действие), и я выполняю некоторый процесс над данными, и я хочу загрузить отправку файлов на другой хост без загрузки на главный хост, поэтому я исследую и нахожу CURL способ отправки этой части для одного файла PHP на другом хосте и выгрузки файлов на этот хост, и я финансирую 3 способа отправки файлов: (я использовал функцию для обнаружения всех отправляемых файлов и пользователя $ i для индексов и помещал в массив перед отправкой)

1: просто используйте реальный путь:

'@'.realpath($_FILES['attach']['tmp_name'][$i]);

2: использовать создание файла:

curl_file_create(realpath($_FILES['attach']['tmp_name'][$i]),mime_content_type($_FILES['attach']['tmp_name'][$i]),basename($_FILES['attach']['tmp_name'][$i]));

3: использовать CurlFile:

new CurlFile(realpath($_FILES['attach']['tmp_name'][$i]),mime_content_type($_FILES['attach']['tmp_name'][$i]),basename($_FILES['attach']['tmp_name'][$i]));

но он не работает и уничтожает мои файлы для отправки, потому что я использую этот код на другом сервере для проверки того, как это работает, но он не работает

этот код находится на другом сервере (цель CURL):

for($i=0;$i<count($_FILES['attachment']['tmp_name']);$i++){
$tmp_name=$_FILES['attachment']['tmp_name'][$i];
$name=$_FILES['attachment']['name'][$i];
$size=$_FILES['attachment']['size'][$i];
$EXTENSION=pathinfo($_FILES['attachment']['tmp_name'][$i],PATHINFO_EXTENSION);
/*uploading files and insert this information to database ...*/
}

но во всех трех отношениях я сказал, что расширение будет "tmp", а не реальным расширением моих файлов отправки; так как я могу это исправить?

ПУТЬ 1:

for($i=0;$i<count($_FILES['attachment']['tmp_name']);$i++){
$PostItems['attachment['.$i.']']=new CurlFile(realpath($_FILES['attachment']['tmp_name'][$i]),mime_content_type($_FILES['attachment']['tmp_name'][$i]),basename($_FILES['attachment']['tmp_name'][$i]));
}

ПУТЬ 2:

for($i=0;$i<count($_FILES['attachment']['tmp_name']);$i++){
$PostItems['attachment['.$i.']']=curl_file_create($_FILES['attachment']['tmp_name'][$i]),mime_content_type($_FILES['attachment']['tmp_name'][$i]),basename($_FILES['attachment']['tmp_name'][$i]));
}

ПУТЬ 3:

for($i=0;$i<count($_FILES['attachment']['tmp_name']);$i++){
$PostItems['attachment['.$i.']']='@'.realpath($_FILES['attachment']['tmp_name'][$i]);
}

$ch=curl_init();curl_setopt($ch,CURLOPT_URL,$TargetURL);
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch,CURLOPT_VERBOSE,0);
curl_setopt($ch,CURLOPT_POSTFIELDS,$PostItems);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
$result=curl_exec($ch);curl_close($ch);
echo $result;

я ожидаю, что на другом сервере (цель curl) я получаю информацию от отправки файлов, но во всех отношениях расширение файлов должно быть "tmp", а имена файлов - все они должны быть "php1234.tmp", а не настоящие мои имя файла

...