php curl загрузка файлов, проблема в: новый CurlFile _OR_ realpath _OR_ curl_file_create - PullRequest
0 голосов
/ 31 мая 2019

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

1:просто используйте реальный путь: '@'.realpath($_FILES['attach']['tmp_name'][$i]);

2: используйте файл create: 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» и не настоящие мои файлыимя

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...