2

別のサーバーで curl を使用してファイルをアップロードしようとしています。このためのスクリプトを作成しましたが、$_FILESパラメーターを取得できません。空っぽです。

$request = curl_init('http://localhost/pushUploadedFile.php');
$file_path = $path.$name;
curl_setopt($request, CURLOPT_POST, true);
curl_setopt(
     $request,
     CURLOPT_POSTFIELDS,
     array(
      'file' => '@' . $file_path,
      'test' => 'rahul'
));
curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
echo curl_exec($request);exit();

pushUploadedFile.php:

print_r($_FILES['file']);
4

3 に答える 3

2
$file_name_with_full_path = realpath('./sample.jpeg');
$post = array('extra_info' => '123456','file_contents'=>'@'.$file_name_with_full_path);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$target_url);
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$result=curl_exec ($ch);
curl_close ($ch);
于 2015-12-14T11:43:25.690 に答える
2

どのバージョンの PHP を使用していますか? PHP 5.5 では curl オプションCURLOPT_SAFE_UPLOADが導入さtrueれ、PHP 5.6.0 以降ではこのオプションがデフォルトになっています。trueを使用したファイルのアップロードが無効になって@/path/to/fileいる場合。したがって、PHP 5.6 以降を使用している場合はfalse、アップロードを許可するように設定する必要があります。

curl_setopt($request, CURLOPT_SAFE_UPLOAD, false);

しかし、@/path/to/fileアップロードのフォーマットは、PHP 5.5.0 の時点で古く、非推奨になっていますCurlFile。このためには、次のクラスを使用する必要があります。

$request = curl_init();
$file_path = $path.$name;
curl_setopt($request, CURLOPT_URL, 'http://localhost/pushUploadedFile.php');
curl_setopt($request, CURLOPT_POST, true);
curl_setopt(
     $request,
     CURLOPT_POSTFIELDS,
     array(
      'file' => new CurlFile( $file_path ),
      'test' => 'rahul'
));
curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
echo curl_exec($request);
于 2015-12-14T12:56:06.870 に答える