Редактировать:
Я думаю, я понял, что они хотят ключ значения, содержащего файл.
Так и должно быть:
$data = [
"importMap" => "userid,firstname,lastname,email,new_password",
"uploadedFileKey" => "@" . realpath("sample.csv"),
"file_upload" => "uploadedFileKey",
...
];
Увы что возвращает (Error 500), Ouch! Something went wrong!
стр. Вероятно, этот метод API был отключен.
/ конец редактирования
Я работаю с Docebo API и каждый отправляемый мной вызов работает нормально, кроме случаев, когда я хочу включить файл.
Я уверен, что неправильно добавляю файл в массив postfield, но не могу понять, в чем заключается моя ошибка.
API запрашивает:
UserApiModuleStartSynchSchema {
importMap (Array[string]): Array of columns identifying the columns of the CSV file. For all allowed column names, see notes above. ,
file_url (string, optional): Publicly accessible URL where the CSV file can be downloaded from ,
file_upload (string, optional): The name of the uploaded CSV file (via multipart POST) ,
...
}
Я отправляю в постполе:
$data = [
"importMap" => "userid,firstname,lastname,email,new_password",
"file_upload" => "sample.csv",
"file" => "@" . realpath("sample.csv"),
...
];
Я удостоверился, что файл существует, содержание корректно и что правильная кодировка используется.
Содержимое файла:
userid,firstname,lastname,email,new_password
marysmith,Mary,Smith,[email protected],fi5Zd90S
Чтобы иметь возможность использовать API, вы должны создать заголовок авторизации, который включает в себя все подобные поля implode(‘,’, $params)
, Если я добавлю туда свой файл, он ответит Authorization header value doesn't match
если я включу его после того, как заголовок был создан, он отвечает Error while reading uploaded CSV file
,
Поэтому я подумал, что будет второй вариант, но я не могу понять, что заставило его не прочитать файл.
Задача ещё не решена.
Других решений пока нет …