Я хочу отправить форму с вводом: файл для отправки информации и загрузки некоторых (от 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", а не настоящие мои имя файла