2016-03-21 46 views
0

在我建立的网站上,我们使用Wufoo表单来集中数据。所以我有一个微不足道的表单,我必须使用他们的API来提交给Wufoo。无法使用其REST 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 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. 
       ) 

     ) 

) 

以前任何人都有这个问题,并知道任何解决方案? 我不得不提,我必须使用Wufoo rest API来提交这个。

+0

[这里是我正在讨论的文档中的问题。](http://help.wufoo.com/articles/en_US/SurveyMonkeyArticleType/API-Examples) – Mircea

回答

0

根据错误消息,文件没有正确上传。这意味着文件的路径,大小或类型有问题。

文件的最大大小为10MB,单个表单中所有字段的总和为20MB。

你为什么不使用它允许除其他外与文件发布条目的Wufoo API PHP Wrapper ....

+0

** Wufoo API PHP Wrapper **有[已知问题](https://github.com/wufoo/Wufoo-PHP-API-Wrapper/issues/9)以及文件上传。他们有一个很好的拉动请求,但由于某种原因,它尚未合并。 – FreeLightman

1

[Field110]的值应该是卷曲的文件对象。

我发现(https://github.com/wufoo/Wufoo-PHP-API-Wrapper/pull/10/commits/094d64436cee405739f5b39bc28f745afed65eb3)在Github上的解决方案,其中包括以下行:

$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行。

相关问题