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