Не удалось загрузить файл с помощью curl в приложении heroku php - PullRequest
0 голосов
/ 20 января 2012

Я получаю ответ «не удалось создать предварительные данные» от 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;

1 Ответ

4 голосов
/ 20 января 2012

Я подозреваю, что основной причиной вашей проблемы может быть эта строка из руководства:

Начиная с 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...