Я не являюсь человеком PHP, но пытаюсь перенести вызов cli CURL на PHP … изначально у меня было:
curl -i -H "Content-Type: text/csv" -X POST --data-binary @$filepath $destination
Я попытался превратить это в:
<?php $data['Filedata'] = "@".$filepath; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $destination.'/_'); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: text/csv")); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($ch); curl_close($ch); ?>
Проблема состоит в том, что это приводит к добавлению дополнительного заголовка к месту назначения, содержащего ------------------------------6614b0cf8aae Content-Disposition: form-data; name=Filedata; filename=$filepath Content-Type: application/octet-stream.
------------------------------6614b0cf8aae Content-Disposition: form-data; name=Filedata; filename=$filepath Content-Type: application/octet-stream.
Я предположил, что это связано с тем, как я использовал $data['Filedata']
, поэтому я попытался заменить строку CURLOPT_POSTFIELDS
ниже, но это просто завершает отправку строки пути, а не самого файла.
curl_setopt($ch, CURLOPT_POSTFIELDS, "@".$filepath);
Любой разум указывает, что мне не хватает? Как я уже сказал, не PHP-человек!