我正在尝试使用cURL通过PHP传输两个文件。我知道通过命令行的方法是
curl -T "{file1,file2,..filex}" ftp://ftp.example.com/ -u username:password
在php中你可以通过以下代码上传1个文件
$ch = curl_init();
$localfile = "somefile";
$username = "Someusername@someserver.com";
$password = "somerandomhash";
$fp = fopen($localfile, 'r');
curl_setopt($ch, CURLOPT_URL, "ftp://ftp.domain.com/");
curl_setopt($ch, CURLOPT_USERPWD, "$user:$pass");
curl_setopt($ch, CURLOPT_UPLOAD, 1);
curl_setopt($ch, CURLOPT_INFILE, $fp);
curl_setopt($ch, CURLOPT_INFILESIZE, filesize($localfile));
curl_exec ($ch);
$error_no = curl_errno($ch);
curl_close ($ch);
但是我如何使用上述方法做多个文件?
答案 0 :(得分:1)
如果您可以使用相同的凭据并行连接到FTP,则可以尝试通过curl_multi_*
进行最少的更改,并使用以下代码进行更改:
$chs = array();
$cmh = curl_multi_init();
for ($i = 0; $i < $filesCount; $i++)
{
$chs[$i] = curl_init();
// set curl properties
curl_multi_add_handle($cmh, $chs[$i]);
}
$running=null;
do {
curl_multi_exec($cmh, $running);
} while ($running > 0);
for ($i = 0; $i < $filesCount; $i++)
{
$content = curl_multi_getcontent($chs[$t]);
// parse reply
curl_multi_remove_handle($cmh, $chs[$t]);
curl_close($chs[$t]);
}
curl_multi_close($cmh);