Tester l'existance du fichier

Fermé
lynda789456 Messages postés 225 Date d'inscription mercredi 24 février 2016 Statut Membre Dernière intervention 22 novembre 2016 - Modifié par KX le 28/03/2016 à 19:10
lynda789456 Messages postés 225 Date d'inscription mercredi 24 février 2016 Statut Membre Dernière intervention 22 novembre 2016 - 29 mars 2016 à 15:42
Bonjour, à travers ce code qui marche bien, je veux tester l'existance du fichier, et je veux à partir de la base de données ,récupérées le fichier stocké, comment faire svp ??
<?php
require 'includes/connect_db.php';

 if(!empty($_FILES)){
    $file_name = $_FILES['fichier']['name'];
    $file_extension = strrchr($file_name,".");
    
    $file_tmp_name = $_FILES['fichier']['tmp_name'];
    $file_dest = 'files/'.$file_name;
    
    $extensions_autorisees = array('.xlsx', '.XLSX');
    
    if(in_array($file_extension, $extensions_autorisees)){

      if(move_uploaded_file($file_tmp_name, $file_dest)){
       $req = $db->prepare('INSERT INTO files(name, file_url) VALUES(?,?)');
    $req->execute(array($file_name, $file_dest));
      echo 'Fichier envoyé avec succès';
   } else{
     echo "Une erreur est survenue lors de l'envoie de fichier";
     }
    } else {
     echo 'Seuls les fichiers Excel sont autorisés';
    }
 }
?>
<!doctype html>
<html>
<head>
   <title>Upload de fichier Excel</title>
   <meta charset="UTF-8" />
</head>
<body>
    <h1>Uploader un fichier Excel</h1>
 <form method="POST" enctype="multipart/form-data">
    
    <input type="file" name="fichier" /> <br/>
    <input type="submit" value="envoyer le fichier" />
 </form>
</body>
</html>

Cordialement^^
A voir également:

1 réponse

Utilisateur anonyme
29 mars 2016 à 10:31
Pour vérifier si le fichier existe déja, même avec un nom différent, tu peux créer un nouveau champs dans ta base de données qui contiendra l'empreinte du fichier (un hash md5 par exemple), quand tu reçois un nouveau fichier tu vérifies si son empreinte n'existe pas déja dans la base de données.

"et je veux à partir de la base de données ,récupérées le fichier stocké"

ça dépend comment est stocké ton fichier, est ce que tu stockes le nom du fichier ? son contenu sous forme de champs TEXT ? ou sous forme de blob ?

Selon ta situation tu fais un file_get_content en php, ou une requete de selection en sql.
0
lynda789456 Messages postés 225 Date d'inscription mercredi 24 février 2016 Statut Membre Dernière intervention 22 novembre 2016
29 mars 2016 à 13:02
Donc je dois ajouter un nouveau champs dans la table, qui crypte le nom du fichier, c ça ?mais comment je procède svp !!!
Dans la table de la BDD il y'a le nom du fichier, son type et son chemin (fichier uploadés), je veux uploader et downolder des fichiers excel qui sont déjà préparé (il y'a la liaison des données entre ces fichiers et la protection de quelques cellules) ,je veux juste les ouvrir, donc puisque je suis dans le mode client/serveur et il faut ouvrir des fichiers excel précis, je pense que la BDD va me sauvé lol
Mais je me bloque un petit peu :( ,j'ai pensé que les liens vers les fichiers excel qui existent étaient une solution, mais ils me téléchargent des copies des fichiers, je peux modifier dessus, mais pas enregistrés malheureusement (ils me disent que les fichier sont en lecture seule), du coup les liaisons ne s'effectuent pas, par contre en dehors du site ça marche très bien les liaisons des données entre ces fichiers excel :(
Merci bien^^
0
Utilisateur anonyme
29 mars 2016 à 15:14
"qui crypte le nom du fichier, c ça "

Non pas le nom du fichier, le contenu pour pouvoir comparer si deux fichiers ont le même contenu. (à moi que tu considères que deux fichiers du même nom ont le même contenu, dans ce cas tu peux uniquement controler le nom du fichier)

Pour le reste, je décroche à partir de la deuxième partie de ton deuxième paragraphe
0
lynda789456 Messages postés 225 Date d'inscription mercredi 24 février 2016 Statut Membre Dernière intervention 22 novembre 2016
29 mars 2016 à 15:42
D'accord merci pour ton aide c gentil^^
Ce qui me tue c que les fichiers excel sont déjà préparés, j'ai travaillé dessus pour juste les ouvrir sur mon site, mais apparemment c pas aussi facile que ça les fichiers excel lol
Ok vous pouvez me résoudre un petit problem sur ce code svp, quand je clique sur le lien du fichier, ça m'affiche une page introuvable parce qu'il y'a une répétition du mot "upload", quand je modifie le chemin de l'adresse, la fenétre du téléchargement du fichier s'ouvre normal, le dossier ou il y'a mes fichiers php et excel s'appelle : upload, voici mes codes d'essai: (j'ai deux fichiers excel, test2 et test3, les moyennes du fichier test2 s'insèrent automatiquement dans le fichier test3, moyenne c t'une colonne)
index.php: fichier de l'enseignant (il va télécharger un fichier excel)
<!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" />
<title>Test</title>
</head>
<body>
<p><a href="upload/downloader.php?doc=test2.xlsx">Télécharger test2.xlsx (240ko)</a></p>
</body>
</html>

chef.php: (fichier du directeur) ,il va télécharger un fichier excel, juste pour consulter c tous^^, il modifie rien, et les moyennes du fichier excel2 s'insèrent automatiquement dans fichier excel3
downloader.php: (je crois qu'ici il y'a une répétition de upload, parce que le dossier aussi s'appelle comme ça ^^
Idem que index.php sauf le nom du fichier qui change, ça devient :test3.xlsx

<?php
$doc = !empty($_GET['doc']) ? trim($_GET['doc']) : '';
if(!empty($doc) && file_exists($doc)) {

$mime = 'application/octet-stream';
$taille = filesize($doc);

// Téléchargement du fichier
header("Content-disposition: attachment; filename=\"$doc\"");
header("Content-Type: $mime");
header("Content-Transfer-Encoding: binary");
header("Content-Length: $taille");
header("Pragma: no-cache");
header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0");
header("Expires: 0");
readfile($doc);
}
?>

Il y'a une répétition du mot upload , car le lien du téléchargement s'affiche ainsi:
http://localhost/upload/upload/downloader.php?doc=test3.xlsx
0