#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'
но изображение все еще кажется поврежденным.