cURLを使用して、生のバイナリファイルを他のデータと一緒にPOSTで送信しようとしています。基本的に、私はそれをしました:
//Here i create the CURLFile
$cfile = new CURLFile($fullpath,'application/xml', $filename);
//Data to upload (including the file)
$data_upload = array('username' => $username,
'password' => $password,
'owner' => $owner,
'destination' => $pathpda,
'filename' => $filename,
'filedata' => $cfile);
//Upload
$ch_upload = curl_init($urlws.$e_upload);
curl_setopt($ch_upload, CURLOPT_POST,true);
curl_setopt($ch_upload, CURLOPT_POSTFIELDS, $data_upload);
curl_setopt($ch_upload, CURLOPT_RETURNTRANSFER, true);
$response_upload = curl_exec($ch_upload);
curl_close($ch_upload);
すべてがうまくいきました。ただし、ファイルをディスク上の実際のファイルではなく、単なるバイナリ データにする必要があります。また、リクエストで他のデータを送信する必要があります。誰もそれを行う方法を知っていますか? Google で調べましたが、未加工のバイナリ ファイルとその他のデータを送信して、両方を行う方法を見つけることができませんでした。ありがとう!
更新私の質問をさらに明確にするために、ランダムなバイナリデータを送信する必要はなく、コンテンツが ob_get_contents() から取得されたファイル(たとえば)を送信する必要がないため、ディスク上の物理ファイルではありません。CURLfile を置き換えて、バイナリ ファイル データを「filedata」変数で送信するだけでは、うまくいきません。Web サービスがファイルを認識しません。実際のファイルを指定せずに CURLfile を作成する方法があるかもしれません。