2015-08-15 68 views
2

哪里有和每个网站我看,他们说wrong file path导致这个错误,但我相信我的路径是正确的,它昨晚工作,为什么不今晚?PHP curl:创建formpost数据失败

为了证明路径是正确的,file_exists($path)返回true

我想用Curl发送文件,我得到failed creating formpost data。到文件,我给卷曲的路径是象下面这样:

define('ASSET_PATH', dirname(dirname(dirname(__FILE__))) . '/asset'); 

$postfields = array(
    'chat_id' => $user->user_id, 
    'caption' => $asset->caption, 
    'duration' => $asset->duration, 
    'video'  => "@" . ASSET_PATH . "/video/" . $asset->name, 
); 

当你看到的$postfields['video']值时,输出为:

/home/hosseins/domains/my_domain/public_html/telegram/asset/video/Bottle_Bank.mp4 

而且代码

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields); 

$result = curl_exec($ch); 
echo curl_error ($ch); //return failed creating formpost data 
echo '<br />' . ASSET_PATH . "/video/" . $asset->name; //return named path 
curl_close($ch); 

我的地址或问题来自哪里?有什么问题吗?
Dudes我卡在这里,任何帮助将不胜感激。
在此先感谢

+0

嗨,我也使用sendVideo,但我有这个问题在这里:http://stackoverflow.com/questions/31961690/trying-to-send-user-video-from-telegram-bot-using-curl你有这样的问题吗? – MscEliot

回答

1

也许我的回答迫使你投票因为愚蠢的问题,但我不得不说这个问题,也许它帮助了某人。

正如我所说,我确信文件的路径,并没有问题。

我的$postfields中有一个标题字段,它的值来自数据库,它的值是'@GamificationBot .... Some Description'。哦!这里是bug ...

卷曲对待@作为文件的路径,意思是当你首先使用字符串@时,该字符串被视为文件路径。所以这里Curl认为我的标题是文件的路径,他绝对找不到。

这就是我的问题的原因。
致敬的贡献者。

0

如果您尚未更改代码并停止工作,则可能是文件的权限已更改。确保文件具有必要的权限。您可以查看here

+0

感谢您的回答,我检查了权限并将它们设置为'755',所以这里没有问题,我也检查过这个链接,根据我的路径是正确的,因为我们也看到了我的问题的路径。 –

+0

您是否尝试过使用其他文件?也许这个文件有问题,也许这个文件太大了。这就是我所能想到的,我从来没有这样上传过,我只是通过文件上传手动编写multipart/form-data。 –

+0

是的,我尝试多个文件,但没有区别,重点是它昨晚成功运行。代码魔术!无论如何感谢您的时间 –