Загрузите файл через php в cisco APIC-EM, используя curl

Я пытаюсь загрузить файл конфигурации через CURL PHP на Cisco APIC-EM через POST, но получаю неожиданную ошибку:

//File Upload
echo "<b>File Upload:</b><br>";
$namespace = "config";
$data = array(
"version" => "",
"response" =>
array(
"nameSpace" => $namespace,
"encrypted" => false,
"id" => "",
"md5Checksum" => "",
"sha1Checksum" => "",
"fileFormat" => "",
"fileSize" => "",
"downloadPath" => "http://hama0942.global.bdfgroup.net/network/net_config/bdfbrsao00000000rt02.txt",
"name" => "bdfbrsao00000000rt02.txt",
"attributeInfo" => "object")
);
$data = json_encode($data);
//For Debugging only - Request
echo "<br>Request:<br>";
echo '<pre>';
print_r($data);
echo '</pre>';
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_URL, "https://hams1484.global.bdfgroup.net/api/v1/file/".$namespace);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: multipart/form-    data", "X-Auth-Token: ".$serviceTicket));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, array($data));
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
$response = curl_exec($ch);
echo "<br><b>Request-Header: </b>".curl_getinfo($ch, CURLINFO_HEADER_OUT )."<br><br>";
//For Output Debugging only - Response
echo "<br>Response:<br>";
echo '<pre>';
print_r(json_decode($response));
echo '</pre>';
curl_close($ch);
echo "<br><hr>";

Это результат:

File Upload:

Request:

{"version":"","response":{"nameSpace":"config","encrypted":false,"id":"","md5Checksum":"","sha1Checksum":"","fileFormat":"","fileSize":"","downloadPath":"http:\/\/hama0942.global.bdfgroup.net\/network\/net_config\/bdfbrsao00000000rt02.txt","name":"bdfbrsao00000000rt02.txt","attributeInfo":"object"}}Request-Header: POST /api/v1/file/config HTTP/1.1 Host: hams1484.global.bdfgroup.net Accept: */* X-Auth-Token: ST-1111-OUiNBLtgALg2ufcwFrh5-cas Content-Length: 436 Expect: 100-continue Content-Type: multipart/form-data; boundary=------------------------5e86cb7113449960Response:

stdClass Object
(
[response] => stdClass Object
(
[errorCode] => 7062
[message] => Unexpected error
[detail] => Non valid file object
)

[version] => 1.0
)

Боюсь, что с настройками CURL что-то не так, но я не уверен. У кого-нибудь есть идея, что здесь не так? Я использую PHP7.

Благодарю.

0

Решение

Я долго боролся с этим и наконец нашел решение для этого.

1: Файл для загрузки должен быть локальным файлом на сервере, с которого вы CURL’ing.

2: $ file = realpath («filenameOnServer»);

3: $ config = новый CURLfile ($ file);

4: $ array = array («fileUpload» => $ config); $ array = json_encode ($ array);

5: curl_setopt ($ ch, CURLOPT_HTTPHEADER, array (‘Content-Type: multipart / form-data; charset = utf-8;’,
‘X-Auth-Token:’. $ Лексема,
));

6: отправить массив как переменную POST в CURL. Больше ничего не нужно

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]