CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Script upload php

jehuty999
jehuty999
Niveau 8
20 décembre 2005 à 13:03:31

Salut à tous

J´ai un site, basé sur le principe d´imageshack, et donc j´ai un script d´upload de fichier. le voici :

<?php
// Récupération du dossier dans lequel le fichier sera uploadé //
$DESTINATION_FOLDER = $_POST["up/"]; //
// Taille maximale de fichier, valeur en bytes //
$MAX_SIZE = 20000000; //
// Récupération de l´url de retour //
$RETURN_LINK = $_SERVER[´HTTP_REFERER´]; //
// Définition des extensions de fichier autorisées (avec le ".")//
$AUTH_EXT = array(".jpg", ".png", //
".bmp", ".gif", ".JPG", ".JPEG", ".jpeg"); //
//

    1. ###############################################
    1. ####### //

// Fonction permettant de créer un lien de retour automatique

function createReturnLink(){
global $RETURN_LINK;
echo "<a href=´".$RETURN_LINK."´>Retour</a><br>";
}

// Fonction permettant de vérifier si l´extension du fichier est
// autorisée.

function isExtAuthorized($ext){
global $AUTH_EXT;
if(in_array($ext, $AUTH_EXT)){
return true;
}else{
return false;
}
}

// On vérifie que le champs contenant le chemin du fichier soit
// bien rempli.

if(!empty($_FILES["file"]["name"])){

// Nom du fichier choisi:
$nomFichier = $_FILES["file"]["name"] ;
$nomFichier = strtr($nomFichier,

´ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúû

üýÿ´,

´AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuu

uyy´);
$nomFichier = preg_replace(´/([^.a-z0-9]+)/i´, ´_´, $nomFichier);
// Nom temporaire sur le serveur:
$nomTemporaire = $_FILES["file"]["tmp_name"] ;
// Type du fichier choisi:
$typeFichier = $_FILES["file"]["type"] ;
// Poids en octets du fichier choisit:
$poidsFichier = $_FILES["file"]["size"] ;
// Poids en Kilo-octets du fichier choisit:
$poidsFichierK = $poidsFichier/1024;
// Pré formatage en affichage avec 0 chiffre après la virgule , donc pas de virgule.
$poidsFichierK = sprintf("%.0f", $poidsFichierK) ;
// Code de l´erreur si jamais il y en a une:
$codeErreur = $_FILES["file"]["error"] ;
// Extension du fichier
$extension = strrchr($nomFichier, ".");

// Si le poids du fichier est de 0 bytes, le fichier est
// invalide (ou le chemin incorrect) => message d´erreur
// sinon, le script continue.
if($poidsFichier <> 0){
// Si la taille du fichier est supérieure à la taille
// maximum spécifiée => message d´erreur
if($poidsFichier < $MAX_SIZE){
// On teste ensuite si le fichier a une extension autorisée
if(isExtAuthorized($extension)){
// Ensuite, on copie le fichier uploadé ou bon nous semble.
$uploadOk = move_uploaded_file($nomTemporaire, $DESTINATION_FOLDER.($nomFichier));
if($uploadOk){
}else{
echo("L´upload a échoué !< br><br>");
echo(createReturnLink());
}
}else{
echo ("Les fichiers avec l´extension $extension ne peuvent pas être uploadés !< br>");
echo (createReturnLink()."<br>");
}
}else{
$tailleKo = $MAX_SIZE / 1000;
echo("Vous ne pouvez pas uploader de fichiers dont la taille est supérieure à : $tailleKo Ko.<br>");
echo (createReturnLink()."<br>");
}
}else{
echo("Le fichier choisi est invalide !< br>");
echo (createReturnLink()."<br>");
}
}else{
echo("Vous n´avez pas choisi de fichier !< br>");
echo (createReturnLink()."<br>");
}
?>

Il fonctionne tres bien, mais je voudrais ajouter une ligne (ou plusieurs ?) pour que si un fichier1 porte le même nom que le fichier2 que l´on va uploadé, il ne soit pas écrasé, et donc que le fichier2 change de nom.

J´ai vu une page qui parlais vaguement de ça :

http://www.phpfrance.com/forums/voir_sujet-545.php

et je me demandais si cette ligne avait un intérêt :

// définit un nom de fichier destination unique à partir du nom du fichier original formaté
$destination_file = time().formatFileName($_FILES[´aFile´][´name´]);

bref, merci d´avoir lu !

:-?

jehuty999
jehuty999
Niveau 8
20 décembre 2005 à 13:05:27

j´ai peut etre une piste, difficile de savoir j´ai lu ça sur un forum :

I looked high and low for a simple way to rename files as they are uploaded to prevent users from overwriting each others files. Below is the script I came up with.

<?php

foreach( $_FILES["screenshots"]["error"] as $key => $error ) {

if( $error == UPLOAD_ERR_OK ) {
$tmp_name = $_FILES["screenshots"]["tmp_name"][$key];
$original_name = $_FILES["screenshots"]["name"][$key];
$tmp_array = preg_split( "/\\\/",$tmp_name );
$file_name = $tmp_array[count($array)-1];
$extension = preg_replace( "/(.*)\.([a-z]+)$/","$2",$original_name );
$new_name = preg_replace( "/(.*)\.([a-z]+)$/","$1.$extension",$file_name );
move_uploaded_file( $tmp_name,"./screenshots/$new_name" );
}

}

?>

watza_Kamikaze
watza_Kamikaze
Niveau 10
20 décembre 2005 à 13:22:30

if(file_exist(...))
et tu enregistres sous un autre nom.

..

watza_Kamikaze
watza_Kamikaze
Niveau 10
20 décembre 2005 à 13:28:09

Ton site, il est pas un peu comme shark... Il est identique.. ô-Ô

jehuty999
jehuty999
Niveau 8
20 décembre 2005 à 13:37:08

Watza_Kamikaze Posté le 20 décembre 2005 à 13:22:30

if(file_exist(...))
et tu enregistres sous un autre nom.

..

:merci: mais tu peux continuer justement, parce que mon probleme c´est que je maitrise pas le php, donc je ne sait pas le dire en php le "if exist then change name"

ça donne quoi en php :svp: ?

et je l´insere ou dans mon script ?

watza_Kamikaze
watza_Kamikaze
Niveau 10
20 décembre 2005 à 13:46:49

http://www.php.net ;p faut se débrouiller. Ca c´est la doc officiel et en francais.

Avec ca..

jehuty999
jehuty999
Niveau 8
20 décembre 2005 à 13:47:54

en français :ouch: lol ya du boulot, bon bah a tout à l´heure, j´ :up: le topic quand j´aurais réussi !

watza_Kamikaze
watza_Kamikaze
Niveau 10
20 décembre 2005 à 13:49:14

http://www.php.net/docs.php

... omg lol :p

jehuty999
jehuty999
Niveau 8
20 décembre 2005 à 14:14:39

voilà ! :gni: vous pouvez uploader 10 fois une image du meme nom, elle n´aura JAMAIS le meme nom une fois sur mon serveur :gni:

merci Watza_Kamikaze, mais j´ai préféré m´abstenir de lire la bible du php, j´ai fait beaucoup plus simple, et plus rapide, et ça fonctionne parfaitement :ok:

:gni: :bye:

deepblue
deepblue
Niveau 16
20 décembre 2005 à 14:32:13

je suis aller voir ce que tu as fait...c´est un peut bourrin le coup du timestamp :/

jehuty999
jehuty999
Niveau 8
20 décembre 2005 à 14:59:00

:lol: :desole: je suis pas assez pro pour faire autre chose, et là c´est sur qu´il n´y aura jamais 2 fois le meme nom, sinon, je peux peut-être raccourcir la date...

deepblue
deepblue
Niveau 16
20 décembre 2005 à 16:09:14

au leu de mettre un timesstamp de 3km de long , fais ça :
<?php
$time = time();
$avant_nom_fichier = date(´d-m-y´, $time);
?>

ça rte donnera un tru comme ça : 12-12-05

watza_Kamikaze
watza_Kamikaze
Niveau 10
20 décembre 2005 à 16:13:37

Ne dis pas n´importe quoi.

Il peut y avoir 2 fois le même en une même date.

Ensuite, il me semblait que php gérait automatiquement la sauvegarde du template.. -_-

Si tu veux une bonne formule, fais ceci :

$vara=strlen(md5(time()-127),4)."a".rand(0,12000).
md5(microtime());

Ou un truc dans le genre...
$nomfichier.$vara

watza_Kamikaze
watza_Kamikaze
Niveau 10
20 décembre 2005 à 16:14:16

Ne dis pas nimp c t sur msn :gni: désolé..

et la formule y a des fautes.. flemme corriger :/

c plus strlen, mais.. ? lol un trou

deepblue
deepblue
Niveau 16
20 décembre 2005 à 16:47:07

ouai...pourquoi j´ai dis ça :honte:

jehuty999
jehuty999
Niveau 8
20 décembre 2005 à 16:58:42

ça va bien la, non ? j´ai raccouric, j´ai laissé l´heure, minutes et secondes

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment