Page 1 sur 2
Renommer fichier upload avec timestamp
Posté : 29 avr. 2013, 13:00
par Sato
Bonjour,
Je réalise un petit script d'upload pour mon nas.
Il fonctionne mais j'aimerai renommer les fichier mp3 avec le timstamp a l'upload.
Voici mon script:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>Blog</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<?php
$connect = mysqli_connect("127.0.0.1", "root", "", "music");
/* Vérification de la connexion */
if (!$connect) {
echo "Échec de la connexion : ".mysqli_connect_error();
exit();
}
if ($_FILES['music']['error']) {
switch ($_FILES['music']['error']){
case 1: // UPLOAD_ERR_INI_SIZE
echo "La taille du fichier est plus grande que la limite autorisée par le serveur (paramètre upload_max_filesize du fichier php.ini).";
break;
case 2: // UPLOAD_ERR_FORM_SIZE
echo "La taille du fichier est plus grande que la limite autorisée par le formulaire (paramètre post_max_size du fichier php.ini).";
break;
case 3: // UPLOAD_ERR_PARTIAL
echo "L'envoi du fichier a été interrompu pendant le transfert.";
break;
case 4: // UPLOAD_ERR_NO_FILE
echo "La taille du fichier que vous avez envoyé est nulle.";
break;
}
}
else {
//si il n'ya pas d'erreur alors $_FILES['nom_du_fichier']['error'] vaut 0
echo "Aucune erreur dans le transfert du fichier.<br />";
if ((isset($_FILES['music']['name'])&&($_FILES['music']['error'] == UPLOAD_ERR_OK))) {
$chemin_destination = 'musics/';
//déplacement du fichier du répertoire temporaire
//(stocké par défaut) dans le répertoire de destination move_uploaded_file($_FILES['music']['tmp_name'], $chemin_destination.$_FILES['music']['name']);
echo "Le fichier ".$_FILES['music']['name']." a été copié sur le serveur";
}
else {
echo "Le fichier n'a pas pu être copié dans le répertoire photos.";
}
}
$requete = "INSERT INTO musique (titre, date, musique) VALUES ('".htmlentities(addslashes($_POST['titre']),ENT_QUOTES)."','".date("Y-m-d H:i:s")."','".$_FILES['music']['name']."')";
$resultat = mysqli_query($connect,$requete);
$identifiant = mysqli_insert_id($connect);
/* Fermeture de la connexion */
mysqli_close($connect);
if ($identifiant != 0) {
echo "<br />Ajout de la musique réussi.<br /><br />";
}
else {
echo "<br />Le commentaire n'a pas pu être ajouté.<br /><br />";
}
?>
<a href="formulaire_ajout.php" >retour à la page d'ajout</a>
</body>
</html>
Comment dois-je m'y prendre pour renommer ce fichier ?
Merci.
Re: Renommer fichier upload avec timestamp
Posté : 29 avr. 2013, 13:06
par ghost5922
Bonjour,
quand tu deplaces ton fichier tu le renomme
move_uploaded_file($_FILES['music']['tmp_name'], $chemin_destination.$_FILES['music']['name']);
au lieu de $_FILES['music']['name'] le nom que tu souhaite
Re: Renommer fichier upload avec timestamp
Posté : 29 avr. 2013, 13:10
par Sato
Bonjour ghost5922
C'est ce que j'aimerai faire, mais je ne connais pas l’algorithme et ou le placer... Cela m’embête d'autant plus que j'essaie mais je n'y arrive pas.
Re: Renommer fichier upload avec timestamp
Posté : 29 avr. 2013, 13:30
par ghost5922
BOnjour,
j'ai edite mon message entre temps
move_uploaded_file($_FILES['music']['tmp_name'], $chemin_destination.time().$_FILES['music']['name']');
devient
move_uploaded_file($_FILES['music']['tmp_name'], $chemin_destination.$_FILES['music']['name']);
cela va nomme ton fichier 12485848.ext si tu veux juste mettre le time en debut
move_uploaded_file($_FILES['music']['tmp_name'], $chemin_destination.time().'.ext');
Re: Renommer fichier upload avec timestamp
Posté : 29 avr. 2013, 13:44
par Sato
Ah eh bien merci cela marche, le fichier et renommer dans le repertoire, mais il n'est pas renommer dans mon champ sql il garde le meme nom.

Re: Renommer fichier upload avec timestamp
Posté : 29 avr. 2013, 13:58
par ghost5922
Bonjour,
faut le mettre aussi dans l'insert
creer une variable avec le nom du fichier exemple
$rename=time().'ext';
move_uploaded_file($_FILES['music']['tmp_name'], $chemin_destination.$rename);
et
$requete = "INSERT INTO musique (titre, date, musique) VALUES ('".htmlentities(addslashes($_POST['titre']),ENT_QUOTES)."','".date("Y-m-d H:i:s")."','".$rename."')";
Re: Renommer fichier upload avec timestamp
Posté : 29 avr. 2013, 14:15
par Sato
Nouveau soucis j'ai cette erreur a l'upload...
Je ne comprend pas ce que cela veut dire pour mon cas en aillant rechercher sur google...
Une piste ?
Re: Renommer fichier upload avec timestamp
Posté : 29 avr. 2013, 14:30
par ghost5922
Bonjour,
vous avez des variables non definis pouvez vous poster votre code ici
Re: Renommer fichier upload avec timestamp
Posté : 29 avr. 2013, 14:36
par Sato
Re-Bonjour,
J'ai juste mis ce que vous m'avez mis plus haut je poste le code modifier:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>Blog</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<?php
$connect = mysqli_connect("127.0.0.1", "root", "", "music");
/* Vérification de la connexion */
if (!$connect) {
echo "Échec de la connexion : ".mysqli_connect_error();
exit();
}
if ($_FILES['music']['error']) {
switch ($_FILES['music']['error']){
case 1: // UPLOAD_ERR_INI_SIZE
echo "La taille du fichier est plus grande que la limite autorisée par le serveur (paramètre upload_max_filesize du fichier php.ini).";
break;
case 2: // UPLOAD_ERR_FORM_SIZE
echo "La taille du fichier est plus grande que la limite autorisée par le formulaire (paramètre post_max_size du fichier php.ini).";
break;
case 3: // UPLOAD_ERR_PARTIAL
echo "L'envoi du fichier a été interrompu pendant le transfert.";
break;
case 4: // UPLOAD_ERR_NO_FILE
echo "La taille du fichier que vous avez envoyé est nulle.";
break;
}
}
else {
//si il n'ya pas d'erreur alors $_FILES['nom_du_fichier']['error'] vaut 0
echo "Aucune erreur dans le transfert du fichier.<br />";
if ((isset($_FILES['music']['name'])&&($_FILES['music']['error'] == UPLOAD_ERR_OK))) {
$chemin_destination = 'musics/';
$rename=time().'mp3';
move_uploaded_file($_FILES['music']['tmp_name'], $chemin_destination.$rename);
echo "Le fichier ".$_FILES['music']['name']." a été copié sur le serveur";
}
else {
echo "Le fichier n'a pas pu être copié dans le répertoire photos.";
}
}
$requete = "INSERT INTO musique (titre, date, musique) VALUES ('".htmlentities(addslashes($_POST['titre']),ENT_QUOTES)."','".date("Y-m-d H:i:s")."','".$rename."')";
$resultat = mysqli_query($connect,$requete);
$identifiant = mysqli_insert_id($connect);
/* Fermeture de la connexion */
mysqli_close($connect);
if ($identifiant != 0) {
echo "<br />Ajout de la musique réussi.<br /><br />";
}
else {
echo "<br />Le commentaire n'a pas pu être ajouté.<br /><br />";
}
?>
<a href="formulaire_ajout.php" >retour à la page d'ajout</a>
</body>
</html>
Re: Renommer fichier upload avec timestamp
Posté : 29 avr. 2013, 14:47
par ghost5922
Bonjour,
pouvez vous mettre votre formulaire aussi svp
Re: Renommer fichier upload avec timestamp
Posté : 29 avr. 2013, 14:54
par Sato
Le voici:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<h2>Formulaire d'ajout de musique</h2>
<form action="insertion_contenu.php" method="POST" enctype="multipart/form-data">
<p>Titre: <input type="text" name="titre" /></p>
<input type="hidden" name="MAX_FILE_SIZE" value="2097152257">
<p>Choisissez une photo avec une taille inférieure à 200 M0.</p>
<input type="file" name="music">
<br /><br />
<input type="submit" name="ok" value="Envoyer">
</form>
</body>
</html>
Re: Renommer fichier upload avec timestamp
Posté : 29 avr. 2013, 15:05
par ghost5922
Bonjour,
test ce code pour voir
<?php
if ($_FILES['music']['error']) {
switch ($_FILES['music']['error']){
case 1: // UPLOAD_ERR_INI_SIZE
echo "La taille du fichier est plus grande que la limite autorisée par le serveur (paramètre upload_max_filesize du fichier php.ini).";
break;
case 2: // UPLOAD_ERR_FORM_SIZE
echo "La taille du fichier est plus grande que la limite autorisée par le formulaire (paramètre post_max_size du fichier php.ini).";
break;
case 3: // UPLOAD_ERR_PARTIAL
echo "L'envoi du fichier a été interrompu pendant le transfert.";
break;
case 4: // UPLOAD_ERR_NO_FILE
echo "La taille du fichier que vous avez envoyé est nulle.";
break;
}
}
else {
//on verifie que tittre ne sois pas vide sinon on reprend le nom du fichier
if(empty($_POST['titre'])){$title=htmlentities(addslashes($_POST['titre']),ENT_QUOTES);}else{$title=htmlentities(addslashes($_FILES['music']['name']),ENT_QUOTES);}
$chemin_destination = 'musics/';
$rename=time().'mp3';
$connect = mysqli_connect("127.0.0.1", "root", "", "music");
/* Vérification de la connexion */
if (!$connect) {
echo "Échec de la connexion : ".mysqli_connect_error();
exit();
}
if(move_uploaded_file($_FILES['music']['tmp_name'], $chemin_destination.$rename)){
echo "Le fichier ".$_FILES['music']['name']." a été copié sur le serveur";
$requete = "INSERT INTO musique (titre, `date`, musique) VALUES('".$title."','".date("Y-m-d H:i:s")."','".$rename."')";
$resultat = mysqli_query($connect,$requete);
$identifiant = mysqli_insert_id($connect);
/* Fermeture de la connexion */
mysqli_close($connect);
if ($identifiant != 0) {
echo "<br />Ajout de la musique réussi.<br /><br />";
}
else {
echo "<br />Le commentaire n'a pas pu être ajouté.<br /><br />";
}
}
else{
echo "Le fichier n'a pas pu être copié.";
}
}
?>
Re: Renommer fichier upload avec timestamp
Posté : 29 avr. 2013, 15:10
par Sato
Même soucis:
Je vois vraiment pas le soucis.
Re: Renommer fichier upload avec timestamp
Posté : 29 avr. 2013, 15:15
par ghost5922
Bonjour,
j'ai pas tous le code la ?
ligne 9 erreur pour la variable music or a la ligne 9 chez moi c'est un break;
Re: Renommer fichier upload avec timestamp
Posté : 29 avr. 2013, 15:19
par Sato
Désolée pardon, je l'ai tronqué:
Voila le code entier:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>Blog</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<?php
if ($_FILES['music']['error']) {
switch ($_FILES['music']['error']){
case 1: // UPLOAD_ERR_INI_SIZE
echo "La taille du fichier est plus grande que la limite autorisée par le serveur (paramètre upload_max_filesize du fichier php.ini).";
break;
case 2: // UPLOAD_ERR_FORM_SIZE
echo "La taille du fichier est plus grande que la limite autorisée par le formulaire (paramètre post_max_size du fichier php.ini).";
break;
case 3: // UPLOAD_ERR_PARTIAL
echo "L'envoi du fichier a été interrompu pendant le transfert.";
break;
case 4: // UPLOAD_ERR_NO_FILE
echo "La taille du fichier que vous avez envoyé est nulle.";
break;
}
}
else {
//on verifie que tittre ne sois pas vide sinon on reprend le nom du fichier
if(empty($_POST['titre'])){$title=htmlentities(addslashes($_POST['titre']),ENT_QUOTES);}else{$title=htmlentities(addslashes($_FILES['music']['name']),ENT_QUOTES);}
$chemin_destination = 'musics/';
$rename=time().'mp3';
$connect = mysqli_connect("127.0.0.1", "root", "", "music");
/* Vérification de la connexion */
if (!$connect) {
echo "Échec de la connexion : ".mysqli_connect_error();
exit();
}
if(move_uploaded_file($_FILES['music']['tmp_name'], $chemin_destination.$rename)){
echo "Le fichier ".$_FILES['music']['name']." a été copié sur le serveur";
$requete = "INSERT INTO musique (titre, `date`, musique) VALUES('".$title."','".date("Y-m-d H:i:s")."','".$rename."')";
$resultat = mysqli_query($connect,$requete);
$identifiant = mysqli_insert_id($connect);
/* Fermeture de la connexion */
mysqli_close($connect);
if ($identifiant != 0) {
echo "<br />Ajout de la musique réussi.<br /><br />";
}
else {
echo "<br />Le commentaire n'a pas pu être ajouté.<br /><br />";
}
}
else{
echo "Le fichier n'a pas pu être copié.";
}
}
?>
<a href="formulaire_ajout.php" >retour à la page d'ajout</a>
</body>
</html>