我想要发送带有input:file的表单来发送信息并上传一些(2到10个)文件。当表单提交信息发送到主主机(form:action)时,我对数据做了一些处理,我想将发送文件上传到另一主机而不在主主机中上传,因此我研究并找到了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”,而不是真实的文件名