在我构建的网站上,我们使用Wufoo表单来集中数据。所以我有一个简单的表格,我必须使用他们的其他API提交给Wufoo。
我根据他们的文档做了所有事情,但是在将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@test.com
[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.
)
)
)
之前有人遇到过这个问题并知道任何解决方案吗? 我必须提到我必须使用Wufoo rest API来提交它。
答案 0 :(得分:1)
[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 :(得分:0)
根据错误消息,文件未正确上传。意味着文件的路径,大小或类型存在问题。
文件的最大大小为10MB,单个表单中的所有字段组合为20MB。
为什么不使用Wufoo API PHP Wrapper,它允许用文件发布条目....