Я получаю ответ «не удалось создать данные formpost» от curl всякий раз, когда я пытаюсь загрузить файл. Я чувствую от других сообщений в Интернете, что это неправильный путь к файлу, но я не могу получить абсолютный путь к герою.
Когда я делаю dirname(__FILE__)
все, что я получаю, это /app/www/
который не может быть прав, может ли это? Как получить абсолютный путь к файлу в приложении heroku?
это моя вся линия для пути изображения, который должен быть включен в почтовые данные
"@".dirname(__FILE__).'/images/wallimages/'.random_pic()
и моя установка завитка:
$ch = curl_init('https://url.com/'.$url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $attachment); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $result = curl_exec($ch); if(curl_errno($ch)) { return 'Curl error: ' . curl_error($ch); } curl_close ($ch); return $result;
Я подозреваю, что причиной вашей проблемы может быть эта строка из руководства:
Начиная с PHP 5.2.0, значение должно быть массивом, если файлы передаются этому параметру с префиксом @.
В любом случае, попробуйте этот код, и если он не работает, сообщите мне, какие сообщения об ошибках вы получите, чтобы я мог отлаживать:
$uploadPath = rtrim(dirname(__FILE__),'/').'/images/wallimages/'.random_pic(); if (!is_file($uploadPath)) die("The file '$uploadPath' does not exist"); if (!is_readable($uploadPath)) die("The file '$uploadPath' is not readable"); $postFields = array ( 'nameOfFileControl' => "@$uploadPath", 'someOtherFormControl' => 'some value' // Adjust this array to match your post fields. // Ensure you keep the array in this format! ); $ch = curl_init('https://url.com/'.$url); curl_setopt($ch, CURLOPT_POST, TRUE); curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); $result = curl_exec($ch); if(curl_errno($ch)) { return 'Curl error: ' . curl_error($ch); } curl_close ($ch); return $result;