私はこれで壁に頭をぶつけてきました。私の問題は本当にばかげているように感じますが、何が原因なのかわかりません。
すべて (POST データとアップロード) を処理するプロキシ スクリプトがあります。
バックエンド サーバーで print_r($_FILES) を実行すると、空の配列になり、$_POST にファイル パスが含まれます。
$ch = curl_init();
$options = array(
CURLOPT_HEADER => 1,
CURLOPT_HTTPHEADER => array(
"Host: {$host}",
"Cache-Control: no-cache"
),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_SSL_VERIFYHOST => false,
CURLOPT_SSL_VERIFYPEER => 0,
CURLOPT_URL => "http://{$this->config->ipAddress}{$url}",
CURLOPT_FOLLOWLOCATION => false,
CURLOPT_COOKIE => $cookie_string,
CURLOPT_USERAGENT => $_SERVER["HTTP_USER_AGENT"]
);
if (! empty($_POST)) {
if (! empty($_FILES)) {
//$options[CURLOPT_HTTPHEADER][] = "Content-type: multipart/form-data";
$files = "";
foreach ($_FILES as $fid => $file) {
$files .= "{$fid}=@" . $file["tmp_name"] . ";type={$file["type"]};name={$file["name"]}&";
}
}
$postString = (! empty($files) ? $files : '') . http_build_query($_POST);
$options[CURLOPT_POST] = 1;
$options[CURLOPT_POSTFIELDS] = $postString;
}
curl_setopt_array($ch, $options);
$output = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
単に配列をフィードする代わりに http_build_query を使用する理由は、多次元配列に遭遇するためです。
ありがとう!