wp_upload_bits

函数
wp_upload_bits ( $name, $deprecated, $bits, $time = null )
参数
  • (string) $name Filename.
    Required:
  • (null|string) $deprecated Never used. Set to null.
    Required:
  • (string) $bits File content
    Required:
  • (string) $time Optional. Time formatted in 'yyyy/mm'. Default null.
    Required:
    Default: null
返回值
  • (array) { Information about the newly-uploaded file. @type string $file Filename of the newly-uploaded file. @type string $url URL of the uploaded file. @type string $type File type. @type string|false $error Error message, if there has been an error. }
定义位置
相关方法
wp_upload_dir_wp_upload_dirwp_get_upload_dirwp_max_upload_sizewp_preload_dialogs
引入
2.0.0
弃用
-

wp_upload_bits是一个将文件上传到WordPress上传目录的函数: 该函数接受一个参数数组,包括文件名、文件内容和上传目录,并使用它们将文件上传到指定的位置。

在上传文件夹中用给定的内容创建一个文件。

如果有一个错误,那么键’error’将存在错误信息。如果成功,那么’file’键将有唯一的文件路径,’url’键将有新文件的链接。而’error’键将被设置为false。

这个函数不会将上传的文件移动到上传文件夹中。它将用$bits参数中的内容创建一个新文件。如果你移动上传文件,读取上传文件的内容,然后你可以把文件名和内容给这个函数,它将把它添加到上传文件夹。

新文件的权限将由这个函数自动设置。

function wp_upload_bits( $name, $deprecated, $bits, $time = null ) {
	if ( ! empty( $deprecated ) ) {
		_deprecated_argument( __FUNCTION__, '2.0.0' );
	}

	if ( empty( $name ) ) {
		return array( 'error' => __( 'Empty filename' ) );
	}

	$wp_filetype = wp_check_filetype( $name );
	if ( ! $wp_filetype['ext'] && ! current_user_can( 'unfiltered_upload' ) ) {
		return array( 'error' => __( 'Sorry, you are not allowed to upload this file type.' ) );
	}

	$upload = wp_upload_dir( $time );

	if ( false !== $upload['error'] ) {
		return $upload;
	}

	/**
	 * Filters whether to treat the upload bits as an error.
	 *
	 * Returning a non-array from the filter will effectively short-circuit preparing the upload bits
	 * and return that value instead. An error message should be returned as a string.
	 *
	 * @since 3.0.0
	 *
	 * @param array|string $upload_bits_error An array of upload bits data, or error message to return.
	 */
	$upload_bits_error = apply_filters(
		'wp_upload_bits',
		array(
			'name' => $name,
			'bits' => $bits,
			'time' => $time,
		)
	);
	if ( ! is_array( $upload_bits_error ) ) {
		$upload['error'] = $upload_bits_error;
		return $upload;
	}

	$filename = wp_unique_filename( $upload['path'], $name );

	$new_file = $upload['path'] . "/$filename";
	if ( ! wp_mkdir_p( dirname( $new_file ) ) ) {
		if ( 0 === strpos( $upload['basedir'], ABSPATH ) ) {
			$error_path = str_replace( ABSPATH, '', $upload['basedir'] ) . $upload['subdir'];
		} else {
			$error_path = wp_basename( $upload['basedir'] ) . $upload['subdir'];
		}

		$message = sprintf(
			/* translators: %s: Directory path. */
			__( 'Unable to create directory %s. Is its parent directory writable by the server?' ),
			$error_path
		);
		return array( 'error' => $message );
	}

	$ifp = @fopen( $new_file, 'wb' );
	if ( ! $ifp ) {
		return array(
			/* translators: %s: File name. */
			'error' => sprintf( __( 'Could not write file %s' ), $new_file ),
		);
	}

	fwrite( $ifp, $bits );
	fclose( $ifp );
	clearstatcache();

	// Set correct file permissions.
	$stat  = @ stat( dirname( $new_file ) );
	$perms = $stat['mode'] & 0007777;
	$perms = $perms & 0000666;
	chmod( $new_file, $perms );
	clearstatcache();

	// Compute the URL.
	$url = $upload['url'] . "/$filename";

	if ( is_multisite() ) {
		clean_dirsize_cache( $new_file );
	}

	/** This filter is documented in wp-admin/includes/file.php */
	return apply_filters(
		'wp_handle_upload',
		array(
			'file'  => $new_file,
			'url'   => $url,
			'type'  => $wp_filetype['type'],
			'error' => false,
		),
		'sideload'
	);
}

常见问题

FAQs
查看更多 >