2016-04-03 2 views
1

Это массив данных, которые я хочу отправить на удаленный сервер.PHP Замечание: Преобразование массива в строковое преобразование при использовании CURL для отправки данных на удаленном сервере

Array 
(
    [petTitle] => test 
    [petType] => 2 
    [breedtype] => dsfsdf 
    [dateOfBirth] => 14 Apr 2016 
    [postcode] => 390015 
    [isPriceNegotiable] => False 
    [price] => test 
    [isPublished] => 1 
    [petQualities] => 2 
    [petDescription] => test 
    [username] => [email protected] 
    [file] => Array 
     (
      [0] => Array 
       (
        [name] => Desert.jpg 
        [type] => image/jpeg 
        [tmp_name] => D:\xampp\tmp\php1F32.tmp 
        [error] => 0 
        [size] => 845941 
       ) 

      [1] => Array 
       (
        [name] => Koala.jpg 
        [type] => image/jpeg 
        [tmp_name] => D:\xampp\tmp\php1F62.tmp 
        [error] => 0 
        [size] => 780831 
       ) 

     ) 

) 

Я использую cURL. Однако, когда я отправляю этот массив с использованием CURLOPT_POSTFIELDS. он генерирует уведомление «Уведомление PHP: преобразование строки в строку».

Я использую примерно так: CURLOPT_POSTFIELDS => $data. Пожалуйста, обратитесь к заявлению на скручивание ниже:

$headers = array("Content-Type:multipart/form-data"); 
$curl = curl_init(); 
curl_setopt_array($curl, array(
    CURLOPT_URL => self::url, 
    CURLOPT_HEADER => true, 
    CURLOPT_RETURNTRANSFER => true, 
    CURLOPT_HTTPHEADER => $headers, 
    CURLOPT_ENCODING => "", 
    CURLOPT_TIMEOUT => 30, 
    CURLOPT_POST => 1, 
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, 
    CURLOPT_CUSTOMREQUEST => "POST", 
    CURLOPT_POSTFIELDS => $data, 
)); 
$response = curl_exec($curl); 

с этим запросом Я могу опубликовать текстовые данные. Но почему-то я не могу загрузить изображение и добавить запись в базу данных.

Любая помощь в этом будет высоко оценена.

+0

Загрузка файлов не работает таким образом. Читайте о 'CURLOPT_POSTFIELDS' в [документации] (http://php.net/manual/en/function.curl-setopt.php). В нем объясняется, как загружать файлы. – axiac

+0

Возможный дубликат http://stackoverflow.com/questions/5224790/curl-post-format-for-curlopt-postfields – awiebe

+0

@awiebe Это не дубликат этого вопроса. Уведомление инициируется, потому что массив, переданный в 'CURLOPT_POSTFIELDS', является многоуровневым и должен иметь только один уровень (или, может быть, два, но значения на втором уровне не должны быть массивами). Но массив неправильный, в первую очередь. Плакат хочет загрузить файл, и для этой цели значение поля 'file' вообще не помогает. – axiac

ответ

0

Уведомление инициируется, потому что массив, который вы передали CURLOPT_POSTFIELDS, имеет неправильный формат. Это многоуровневый массив, который вы помещаете в file.

Но массив, который вы положили в file, не позволяет загружать файлы. Вот как выглядит информация о загруженных файлах на PHP-сценарии назначения, но со стороны источника выглядит иначе.

Замените значение file с:

$data = array(
    // ... all the text fields here 
    'file1' => new CURLFile('... path .../Desert.jpg', 'image/jpeg'), 
    'file2' => new CURLFile('... path .../Koala.jpg', 'image/jpeg'), 
); 

Заменить ... path ... в коде выше дорожкам соответствующих файлов.

+0

Вы не знаете, как это будет работать. В настоящее время я столкнулся с проблемой. Можете ли вы просто предоставить фрагмент кода? –

+0

Как выглядит код формы, которую вы пытаетесь имитировать? Вы должны использовать те же имена для полей. Вероятно, он содержит два или более '', и у них разные имена, не так ли? – axiac

+0

Да, у меня есть несколько ''. Их имя img1 - img4. Это потому, что я взял многомерный массив. Потому что только одно изображение является обязательным, а другое может быть предоставлено или пропущено. Итак, если вы можете мне помочь, как именно я могу передать массив, который позволяет загрузить ваше изображение на удаленный сервер, и я могу избавиться от этого ** Замечание PHP: Ошибка преобразования массива в строку **. Я застрял, и это действительно очень высокий приоритет. Я должен найти решение так или иначе сегодня. Спасибо за вашу помощь. –

Смежные вопросы