Изображение с типом содержимого: двоичный / октетный поток, сохраняемый в неправильном формате

#php #wordpress #curl #mime-types #content-type

#php #wordpress (wordpress ) #curl #mime-типы #тип содержимого #wordpress

Вопрос:

Я использую wp_upload_bits, который является оболочкой cURL для WordPress, для сохранения на моем сервере удаленного изображения в формате png, которое ранее было загружено с типом содержимого: двоичный / октетный поток.

Вот как выглядит мой код:

(неправильный код, см. Ниже)

     //File contents
    $attachment = 'image/png,' . file_get_contents( $url );

    // Upload bits attachment
    $result = wp_upload_bits( 
        basename( $url ), 
        null,
        $attachment
    );
  

(правильный код)

     $attachment = new WP_Http();
    $attachment = $attachment->request( $url, array(
        'headers' => array( 
            'X-app-action' => 'importing'
        ),
    ) );

    // Upload bits attachment
    $result = wp_upload_bits( 
        basename( $url ), 
        null,
        $attachment[ 'body' ]
    );
  

ОТРЕДАКТИРОВАНО: на самом деле это код, я запутался, я использую WP_Http() вместо file_get_contents()

К сожалению, я должен предположить, что изображение сохраняется в неправильном формате, поскольку оно выглядит поврежденным или сломанным, изображение вообще не будет отображаться.

Что я делаю не так?

Комментарии:

1. $attachment должно содержать только file_get_contents( $url ) , тип файла проверяется внутренне по имени файла, поэтому убедитесь, что у вас указан правильный путь.

2. @Xorifelse Извиняюсь, я запутался, я использую WP_Http() вместо file_get_contents(), я отредактировал код в вопросе.

3. Возможно, протестируйте и добавьте заголовок в image/png (если это изображение png), если это работает, выберите правильный mime-тип, используя wp_check_filetype( $filename, $mimes ) where $mimes содержит правильный mimetype. Но, просто говоря, может быть другой способ, я никогда в жизни не использовал WP..

4. Должен ли я добавить заголовок image/png в объект запроса WP_Http?

5. @Xorifelse Я пытался добавить, 'Content-Type' => 'image/png' но изображение все еще кажется поврежденным.