Невозможно загрузить файл в Wufoo, используя их REST API

На веб-сайте, который я создаю, мы используем формы Wufoo для централизации данных. Итак, у меня есть тривиальная форма, которую я должен отправить в Wufoo, используя их оставшийся API.

Я сделал все в соответствии с их документацией, но я все еще получаю сообщение об ошибке при отправке запроса POST в их конечную точку.

Вот так выглядит мой запрос:

$ref = curl_init('https://{domain}.wufoo.com/api/v3/forms/' . WUFOO_FORM_HASH . '/entries.json');
curl_setopt($ref, CURLOPT_HTTPHEADER, array('Content-type: multipart/form-data'));
curl_setopt($ref, CURLOPT_POST, true);
curl_setopt($ref, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ref, CURLOPT_POSTFIELDS, $_formData);
curl_setopt($ref, CURLOPT_USERPWD, WUFOO_API_KEY . ':X');
curl_setopt($ref, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ref, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ref, CURLOPT_SSL_VERIFYHOST, true);
curl_setopt($ref, CURLOPT_FOLLOWLOCATION, true);
$result = json_decode(curl_exec($ref), true);

И это массив $ _formData:

Array
(
[Field4] => firstname
[Field3] => lastname
[Field5] => [email protected]
[Field110] => @/var/tmp/random_name/test.txt
)

Всякий раз, когда я прикрепляю файл к запросу в Field110, запрос завершается с ошибкой:

Array
(
[Success] => 0
[ErrorText] => Errors have been <b>highlighted</b> below.
[FieldErrors] => Array
(
[0] => Array
(
[ID] => Field110
[ErrorText] => This file was NOT successfully uploaded. Please try again.
)

)

)

Кто-нибудь сталкивался с этой проблемой раньше и знает какие-либо решения?
Я должен отметить, что я ДОЛЖЕН использовать API отдыха Wufoo, чтобы отправить это.

0

Решение

Значение для [Field110] должен быть объектом файла CURL.

Я нашел решение на Github (https://github.com/wufoo/Wufoo-PHP-API-Wrapper/pull/10/commits/094d64436cee405739f5b39bc28f745afed65eb3), которая включает следующую строку:

$curl_file = curl_file_create($this->value, mime_content_type($this->value), pathinfo($this->value, PATHINFO_BASENAME));

Возможно, вам придется заменить $this->valueпросто убедитесь, что он получает значение /var/tmp/random_name/test.txt и передать $curl_file в [Field110],

Если вы хотите увидеть еще одну иллюстрацию, я фактически реализовал это в плагине WordPress: https://github.com/friendofdog/better_wfi_wordpress/blob/master/front/post-intermediary.php. Осмотрите линию 77.

1

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

Согласно сообщению об ошибке файл не был успешно загружен. Это означает, что существует проблема с путем, размером или типом файла.

Максимальный размер файла составляет 10 МБ, а для всех полей в одной форме — 20 МБ.

Почему вы не используете Wufoo API PHP Wrapper это позволяет среди прочего публиковать записи с файлами ….

0

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