2016-03-21 47 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行。

相關問題