UNPKG

@wordpress/upload-media

Version:
91 lines (83 loc) 2.19 kB
/** * WordPress dependencies */ import { getFilename } from '@wordpress/url'; import { _x } from '@wordpress/i18n'; /** * Converts a Blob to a File with a default name like "image.png". * * If it is already a File object, it is returned unchanged. * * @param fileOrBlob Blob object. * @return File object. */ export function convertBlobToFile( fileOrBlob: Blob | File ): File { if ( fileOrBlob instanceof File ) { return fileOrBlob; } // Extension is only an approximation. // The server will override it if incorrect. const ext = fileOrBlob.type.split( '/' )[ 1 ]; const mediaType = 'application/pdf' === fileOrBlob.type ? 'document' : fileOrBlob.type.split( '/' )[ 0 ]; return new File( [ fileOrBlob ], `${ mediaType }.${ ext }`, { type: fileOrBlob.type, } ); } /** * Renames a given file and returns a new file. * * Copies over the last modified time. * * @param file File object. * @param name File name. * @return Renamed file object. */ export function renameFile( file: File, name: string ): File { return new File( [ file ], name, { type: file.type, lastModified: file.lastModified, } ); } /** * Clones a given file object. * * @param file File object. * @return New file object. */ export function cloneFile( file: File ): File { return renameFile( file, file.name ); } /** * Returns the file extension from a given file name or URL. * * @param file File URL. * @return File extension or null if it does not have one. */ export function getFileExtension( file: string ): string | null { return file.includes( '.' ) ? file.split( '.' ).pop() || null : null; } /** * Returns file basename without extension. * * For example, turns "my-awesome-file.jpeg" into "my-awesome-file". * * @param name File name. * @return File basename. */ export function getFileBasename( name: string ): string { return name.includes( '.' ) ? name.split( '.' ).slice( 0, -1 ).join( '.' ) : name; } /** * Returns the file name including extension from a URL. * * @param url File URL. * @return File name. */ export function getFileNameFromUrl( url: string ) { return getFilename( url ) || _x( 'unnamed', 'file name' ); }