php ЗагружаемфайлпоURL,перемещаемвпапкуuploads,привязываемфайлкюзеру,обновляеммету
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php ЗагружаемфайлпоURL,перемещаемвпапкуuploads,привязываемфайлкюзеру,обновляеммету相关的知识,希望对你有一定的参考价值。
<?php
/**
* Загружаем файл по URL, перемещаем в папку uploads,
* привязываем файл к юзеру, обновляем мету
*
* @param string $url URL картинки.
* @param integer $user_id ID пользователя.
*/
function ms_auth_set_avatar( $url, $user_id ) {
// Если у юзера уже есть аватар - ничего не делаем.
if ( (boolean) get_user_meta( $user_id, 'user-avatar', true ) ) {
return;
}
if ( ! function_exists( 'wp_handle_upload' ) ) {
/** @noinspection PhpIncludeInspection */
require_once( ABSPATH . 'wp-admin/includes/file.php' );
}
if ( ! function_exists( 'wp_generate_attachment_metadata' ) ) {
/** @noinspection PhpIncludeInspection */
include( ABSPATH . 'wp-admin/includes/image.php' );
}
// загрузка файла во временную директорию
$temp_file = download_url( $url, 5 );
// Получить mime-type временного файла.
$mime_type = mime_content_type( $temp_file );
// Получить расширение фафла по его mime-type.
$ext = strtok( array_search( $mime_type, get_allowed_mime_types() ), '|' );
// Если не смогли скачать файл во временную папку.
if ( is_wp_error( $temp_file ) ) {
return;
}
// массив аналогичный массиву $_FILE as seen in PHP file uploads
$file = array(
'name' => basename( $ext ? ( str_replace( '.tmp', '', $temp_file ) . ".$ext" ) : $temp_file ),
'type' => $mime_type,
'tmp_name' => $temp_file,
'error' => 0,
'size' => filesize( $temp_file ),
);
// Переопределяем конфиг загрузки.
$overrides = array(
'test_form' => false,
'test_size' => true,
'test_upload' => true,
);
// перемещение временного файла в папку загрузки.
$file_data = wp_handle_sideload( $file, $overrides );
// Удалить временный файл.
@unlink( $temp_file );
// Если не удалось переместить файл в uploads.
if ( ! empty( $results['error'] ) ) {
return;
}
// информация по текущему пользователю.
$user_info = get_userdata( $user_id );
// настройки аттачмента
$attachment = array(
'guid' => ! empty( $file_data['url'] ) ? $file_data['url'] : '',
'post_mime_type' => ! empty( $file_data['type'] ) ? $file_data['type'] : '',
'post_title' => $user_info->display_name,
'post_content' => '',
'post_status' => 'inherit',
'post_author' => $user_info->ID,
'post_parent' => $user_info->ID,
);
// Размер файла изменяется до указанных параметров.
$image = wp_get_image_editor( $file_data['file'] );
// Если не удалось получить объект WP_Image_Editor.
if ( is_wp_error( $image ) ) {
return;
}
// Сжимаем изображение.
$image->set_quality( 85 );
// Изменяем размер изображения с последующим кропом.
$image->resize( 640, 640, true );
// cохранение изображения с указанием его mime-type
$image->save( $file_data['file'], $attachment['post_mime_type'] );
// Привязываем аттачмент к профилю
$attachment_id = wp_insert_attachment( $attachment, $file_data['file'], $user_id );
// генерация миниатюр аттачмента
$attach_data = wp_generate_attachment_metadata( $attachment_id, $file_data['file'] );
// обновление метаданных аттачмента
wp_update_attachment_metadata( $attachment_id, $attach_data );
// обновление ссылки на файл аватара
update_user_meta( $user_id, 'user-avatar', $file_data['url'] );
}
以上是关于php ЗагружаемфайлпоURL,перемещаемвпапкуuploads,привязываемфайлкюзеру,обновляеммету的主要内容,如果未能解决你的问题,请参考以下文章
php Загрузкафайлов,проверяемвременныйпуть,еслинеок - делаемправильнымего
Айтжан То?та?ан - К?й деген?м?з шоу емес
html Неплохаяформаспростенькойанимацией,проверкойназаполнениеполейсрекапчейгугла2
php ФормаобратнойсвязисзагрузкойфайлавWordPressнаосновеплагинаAjaxSimply。
sh Скрипт,запускающийзагрузкуфайловспомощьюaria2cилизагрузкувидеосytubeсконвертациейваудиоспомощьюyo
sh Удалитьизпапкиоооченьбольшоеколическтвофайлов,когдаlnlsнеможетдажеотобразить。 #linux