web-dev-qa-db-fra.com

Renommer l'image pendant le téléchargement en utilisant la date et l'heure?

J'essaie de renommer les images pendant le téléchargement pour éviter les problèmes de noms de fichiers d'image contenant des caractères spéciaux et des noms de fichier avec des caractères non latins.

J'ai trouvé cette fonction pour renommer des images dans WordPress :

function sanitize_file_uploads( $file ){
    $file['name'] = sanitize_file_name($file['name']);
    $file['name'] = preg_replace("/[^a-zA-Z0-9\_\-\.]/", "", $file['name']);
    $file['name'] = strtolower($file['name']);
    add_filter('sanitize_file_name', 'remove_accents');

    return $file;
}
add_filter('wp_handle_upload_prefilter', 'sanitize_file_uploads');

Il supprimera les caractères spéciaux non acceptés, convertira le nom en minuscule et supprimera les accents. Mais, par exemple, si l’image ne contient que des caractères non latins, elle créera un nom de fichier d’image identique à celui-ci: jpg-width-heigh.jpg (width et height sont les dimensions de l’image).

J'aimerais que le nom du fichier image soit basé sur la date et l'heure actuelles, par exemple: année-mois-jour-heure-minute-seconde.jpg

Je sais qu'il existe un plug qui peut faire cela renommer un fichier lors de l'envoi , mais je ne souhaite pas utiliser de plugin pour cela.

Est-ce que quelqu'un a une solution, une idée?

2
Advanced SEO

Vous pourriez par exemple vérifiez le nom du fichier et extension à partir de la pathinfo, après votre désinfection personnalisée.

Exemple:

Si le nom du fichier est vide et extension non vide, ajoutez l'heure actuelle formatée en tant que partie du nom de fichier:

$info = pathinfo( $file['name'] );
if( empty( $info['filename'] ) && ! empty( $info['extension'] ) )
    $file['name'] = sprintf( '%s.%s', current_time( 'Y-m-d-H-i-s' ), $info['extension'] );

Si le fichier áéíú.png est effacé à .png avec votre désinfection personnalisée, il sera renommé en 2016-08-14-10-54-07.png

Notez que si vous importez un autre fichier de ce type au cours de la même seconde, alors wp_unique_filename() ajoutera -1 à la partie du nom de fichier afin qu'il soit renommé en 2016-08-14-10-54-07-1.png. -2 sera ajouté au troisième fichier, etc.

J'espère que vous pourrez adapter cela à vos besoins.

4
birgire