Php + deplacer un fichier
Résolu
Camuke
Messages postés
224
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
salut,
J'ai cree un formulaire qui permet, grace a un bouton parcourir de recuperer un fichier video.
Lorsqu'on clique sur un bouton "envoyer la video", il se passe choses:
-1er: Sa copie le fichier vers un dossier specifique (sur le serveur de mon site)
-2eme: Sa met a jour une base de données (le nom, et l'emplacement du fichier : (dossierspecifique/nomfichier.php)
-3eme: Affiche un lien a copier dans un article de mon site pour lire se fichier.
Le probleme s'est que avant de copier le lien, je veux verifier si le fichier existe deja, et si s'est le cas, j'affiche une boite de dialogue qui demande si l'on veux ou pas remplacer le fichier.
Si s'est pas le cas, le fichier deja existant est supprimer puis sa devrai inserer le nouveau mais l'insertion ne marche pas.
Voila le code:
PAGE INSERTIONVIDEO.PHP
<?
session_start();
include "globale.inc.php";
include "fonction.inc.php";
$connection = connecte();
?>
<html>
<head>
</head>
<body>
<?
if (isset($_FILES['FichierVideo']))
{
//recuperation des données du formulaires
$NomFichier = $_FILES['FichierVideo']['name'];
$TmpFichier = $_FILES['FichierVideo']['tmp_name'];
if (isset($_GET['NomVideo'], $_GET['Confirmation']))
{
$NomVideo = $_GET['NomVideo'];
$Confirmation = $_GET['Confirmation'];
}
else if (isset($_POST['NomVideo']))
{
$NomVideo = $_POST['NomVideo'];
$Confirmation = "";
}
//Verification de l'existance du Fichier
$EmplacementFichier = 'C:/Program Files/EasyPHP1-8/www/joomlatest/video/video/'.$NomFichier;
$FileExist = file_exists($EmplacementFichier);
if($FileExist)
{
$_SESSION['NomFichier']= $NomFichier;
$_SESSION['TmpFichier']= $TmpFichier;
$_SESSION['NomVideo']= $NomVideo;
$_SESSION['FileExist'] = $FileExist;
echo '
<script type="text/javascript">
vConfirmation = confirm("Un fichier du meme nom existe deja, voulez vous le remplacer?");
if (vConfirmation == false) {
alert("Operation Annulée");
window.close();
}
else
{
window.open("Transfert.php");
}
</script>';
}
else
{
InsertionVideo($NomFichier, $TmpFichier, $NomVideo, $FileExist);
deconnecte($connection);
}
}
else
{
?>
<form action="/joomlatest/video/insertvideo.php" method="post" enctype="multipart/form-data">
<p><label>Nom de la Video <input type="text" name="NomVideo"></label></p>
<p><label>Lien de la Video <input type="file" size="" name="FichierVideo" value="5000000"></label></p>
<p><input type="submit" value="Inserer la video"></p>
</form>
<?
}
?>
</body>
</html>
CODE DE LA PAGE TRANSFERT.PHP
<?
session_start();
include "globale.inc.php";
include "fonction.inc.php";
$connection = connecte();
?>
<html>
<head>
</head>
<body>
<?
{
$NomFichier = $_SESSION['NomFichier'];
$TmpFichier = $_SESSION['TmpFichier'];
$NomVideo = $_SESSION['NomVideo'];
$FileExist = $_SESSION['FileExist'];
InsertionVideo($NomFichier, $TmpFichier, $NomVideo, $FileExist);
}
?>
</body>
</html>
CODE DE LA PAGE FONCTION.INC.PHP
function InsertionVideo ($eNomFichier, $eTmpFichier, $eNomVideo, $eFileExist) {
include "globale.inc.php";
$connection = connecte();
//Copie de la video vers le dossier du serveur.
$LienVideo = 'C:/Program Files/EasyPHP1-8/www/joomlatest/video/video/'.$eNomFichier;
echo $LienVideo.'</br>';
echo $eTmpFichier.'</br>';
if ($eFileExist)
{
if (unlink($LienVideo))
{
echo 'suppression reussit';
}
else
{
echo 'suppresion rater';
}
if (move_uploaded_file($eTmpFichier, $LienVideo))
{
echo 'Insertion reussit';
}
else
{
echo 'Insertion echoué';
}
}
else
{
if (move_uploaded_file($eTmpFichier, $LienVideo))
{
echo 'Insertion reussit';
}
else
{
echo 'Insertion echoué';
}
}
.... le reste fonctionne, c'est l'insertion dans la base de données.
J'ai cree un formulaire qui permet, grace a un bouton parcourir de recuperer un fichier video.
Lorsqu'on clique sur un bouton "envoyer la video", il se passe choses:
-1er: Sa copie le fichier vers un dossier specifique (sur le serveur de mon site)
-2eme: Sa met a jour une base de données (le nom, et l'emplacement du fichier : (dossierspecifique/nomfichier.php)
-3eme: Affiche un lien a copier dans un article de mon site pour lire se fichier.
Le probleme s'est que avant de copier le lien, je veux verifier si le fichier existe deja, et si s'est le cas, j'affiche une boite de dialogue qui demande si l'on veux ou pas remplacer le fichier.
Si s'est pas le cas, le fichier deja existant est supprimer puis sa devrai inserer le nouveau mais l'insertion ne marche pas.
Voila le code:
PAGE INSERTIONVIDEO.PHP
<?
session_start();
include "globale.inc.php";
include "fonction.inc.php";
$connection = connecte();
?>
<html>
<head>
</head>
<body>
<?
if (isset($_FILES['FichierVideo']))
{
//recuperation des données du formulaires
$NomFichier = $_FILES['FichierVideo']['name'];
$TmpFichier = $_FILES['FichierVideo']['tmp_name'];
if (isset($_GET['NomVideo'], $_GET['Confirmation']))
{
$NomVideo = $_GET['NomVideo'];
$Confirmation = $_GET['Confirmation'];
}
else if (isset($_POST['NomVideo']))
{
$NomVideo = $_POST['NomVideo'];
$Confirmation = "";
}
//Verification de l'existance du Fichier
$EmplacementFichier = 'C:/Program Files/EasyPHP1-8/www/joomlatest/video/video/'.$NomFichier;
$FileExist = file_exists($EmplacementFichier);
if($FileExist)
{
$_SESSION['NomFichier']= $NomFichier;
$_SESSION['TmpFichier']= $TmpFichier;
$_SESSION['NomVideo']= $NomVideo;
$_SESSION['FileExist'] = $FileExist;
echo '
<script type="text/javascript">
vConfirmation = confirm("Un fichier du meme nom existe deja, voulez vous le remplacer?");
if (vConfirmation == false) {
alert("Operation Annulée");
window.close();
}
else
{
window.open("Transfert.php");
}
</script>';
}
else
{
InsertionVideo($NomFichier, $TmpFichier, $NomVideo, $FileExist);
deconnecte($connection);
}
}
else
{
?>
<form action="/joomlatest/video/insertvideo.php" method="post" enctype="multipart/form-data">
<p><label>Nom de la Video <input type="text" name="NomVideo"></label></p>
<p><label>Lien de la Video <input type="file" size="" name="FichierVideo" value="5000000"></label></p>
<p><input type="submit" value="Inserer la video"></p>
</form>
<?
}
?>
</body>
</html>
CODE DE LA PAGE TRANSFERT.PHP
<?
session_start();
include "globale.inc.php";
include "fonction.inc.php";
$connection = connecte();
?>
<html>
<head>
</head>
<body>
<?
{
$NomFichier = $_SESSION['NomFichier'];
$TmpFichier = $_SESSION['TmpFichier'];
$NomVideo = $_SESSION['NomVideo'];
$FileExist = $_SESSION['FileExist'];
InsertionVideo($NomFichier, $TmpFichier, $NomVideo, $FileExist);
}
?>
</body>
</html>
CODE DE LA PAGE FONCTION.INC.PHP
function InsertionVideo ($eNomFichier, $eTmpFichier, $eNomVideo, $eFileExist) {
include "globale.inc.php";
$connection = connecte();
//Copie de la video vers le dossier du serveur.
$LienVideo = 'C:/Program Files/EasyPHP1-8/www/joomlatest/video/video/'.$eNomFichier;
echo $LienVideo.'</br>';
echo $eTmpFichier.'</br>';
if ($eFileExist)
{
if (unlink($LienVideo))
{
echo 'suppression reussit';
}
else
{
echo 'suppresion rater';
}
if (move_uploaded_file($eTmpFichier, $LienVideo))
{
echo 'Insertion reussit';
}
else
{
echo 'Insertion echoué';
}
}
else
{
if (move_uploaded_file($eTmpFichier, $LienVideo))
{
echo 'Insertion reussit';
}
else
{
echo 'Insertion echoué';
}
}
.... le reste fonctionne, c'est l'insertion dans la base de données.
A voir également:
- Php + deplacer un fichier
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Déplacer colonne excel - Guide
- Fichier rar - Guide
12 réponses
aparement tu utilise une fonction move_uploaded_file($eTmpFichier, $LienVideo)
pourais tu nous la montrer?
si c'est une fonction d'upload essai plutot de supprimer avec delete puis d'insérer avec insert...
pourais tu nous la montrer?
si c'est une fonction d'upload essai plutot de supprimer avec delete puis d'insérer avec insert...
si par montrer, tu veux un lien sur le site, je peux pas car le site est en intranet de la societe ou je travaille donc il n'est pas sur le net.
Pour le delete et insert, tu parle des requete sql non ? (insert into..... et delete from...), si oui le probleme n'est pas la, la base de donnée ne pose aucun probleme, tout marche a la perfection (ya au moins 1 truc qui fonctionne ^^)
J'y connais pas grand chose mais je pence que lorsque je transfert les donnée vers ma page: transfert.php, j'ai l'impression que mon pc ne retrouve plus le fichier temporaire (on dirai qu'il est supprimer) car lorsque la video n'existe pas deja, je ne passe pas par ma page Transfert.php l'insertion fonctionne correctement.(j'utilise cette page car je peux pas faire appel a une fonction php dans du javascript donc j'ouvre une nouvelle page qui elle appelle la fonction).
J'ai pencé a une autre solution mais je sais pas du tout comment faire:
Quand l'on clique sur mon bouton Parcourir et que l'on selectionne un fichier, l'emplacement de la vidéo se copie dans un texte box mais j'ai pas trouver comment le recuperer.
Si quelqu'un sait comment faire, je ferai un copy() et sa pourrai resoudre mon probleme
Pour le delete et insert, tu parle des requete sql non ? (insert into..... et delete from...), si oui le probleme n'est pas la, la base de donnée ne pose aucun probleme, tout marche a la perfection (ya au moins 1 truc qui fonctionne ^^)
J'y connais pas grand chose mais je pence que lorsque je transfert les donnée vers ma page: transfert.php, j'ai l'impression que mon pc ne retrouve plus le fichier temporaire (on dirai qu'il est supprimer) car lorsque la video n'existe pas deja, je ne passe pas par ma page Transfert.php l'insertion fonctionne correctement.(j'utilise cette page car je peux pas faire appel a une fonction php dans du javascript donc j'ouvre une nouvelle page qui elle appelle la fonction).
J'ai pencé a une autre solution mais je sais pas du tout comment faire:
Quand l'on clique sur mon bouton Parcourir et que l'on selectionne un fichier, l'emplacement de la vidéo se copie dans un texte box mais j'ai pas trouver comment le recuperer.
Si quelqu'un sait comment faire, je ferai un copy() et sa pourrai resoudre mon probleme
j'entendai copie du code lol
qu'est ce que tu entend toi par "copie dans un texte box " tu veux copier l'adresse dans un fichiers .txt ou quelque chose comme ça pour le sauvegarder un moment?
si oui renseigne toi sur fopen(), fputs() et fget() en php
qu'est ce que tu entend toi par "copie dans un texte box " tu veux copier l'adresse dans un fichiers .txt ou quelque chose comme ça pour le sauvegarder un moment?
si oui renseigne toi sur fopen(), fputs() et fget() en php
tout le code est dans mon 1er post non?, ce que j'ai pas mit se sont la page de connection a la base (sa marche sa j'en suis sur), et diverse fonction de calcul qui n'ont rien a voir.
Lorsque je met sa en code:
<form action="/joomlatest/video/insertvideo.php" method="post" enctype="multipart/form-data">
<p><label>Nom de la Video <input type="text" name="NomVideo"></label></p>
<p><label>Lien de la Video <input type="file" size="" name="FichierVideo" value="5000000"></label></p>
<p><input type="submit" value="Inserer la video"></p>
</form>
3 chose s'affiche:
-une texte box NOMVIDEO, l'utilisateur rentre un nom pour sa video
-un bouton parcourir qui est composé en 2: il y a un champ de texte ou l'on peux saisir l'emplacement du fichier (ex: C://programfile/easyPhp/www/video/toto.wnv) et a cote un bouton PARCOURIR qui permet de selectionner un fichier et sa entre l'emplacement du fichier automatique dans le champ texte. ( sa permet d'evite simplement d'avoir a saisir l'emplacement)
Le probleme s'est que se qu'il ecrit dedans, j'arrive pas a le recuperer.
Je vais regarder a quoi servent les fonctions que tu m'a donner et je te dirai quoi.
Merci
Lorsque je met sa en code:
<form action="/joomlatest/video/insertvideo.php" method="post" enctype="multipart/form-data">
<p><label>Nom de la Video <input type="text" name="NomVideo"></label></p>
<p><label>Lien de la Video <input type="file" size="" name="FichierVideo" value="5000000"></label></p>
<p><input type="submit" value="Inserer la video"></p>
</form>
3 chose s'affiche:
-une texte box NOMVIDEO, l'utilisateur rentre un nom pour sa video
-un bouton parcourir qui est composé en 2: il y a un champ de texte ou l'on peux saisir l'emplacement du fichier (ex: C://programfile/easyPhp/www/video/toto.wnv) et a cote un bouton PARCOURIR qui permet de selectionner un fichier et sa entre l'emplacement du fichier automatique dans le champ texte. ( sa permet d'evite simplement d'avoir a saisir l'emplacement)
Le probleme s'est que se qu'il ecrit dedans, j'arrive pas a le recuperer.
Je vais regarder a quoi servent les fonctions que tu m'a donner et je te dirai quoi.
Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
et bien $_POST['FichierVideo'] il te donne quoi?
me rapel plus trop comment foncitonne les type file mais normalement du récupère comme n'importe quel champs!
me rapel plus trop comment foncitonne les type file mais normalement du récupère comme n'importe quel champs!
Qje fait un echo de $_POST['FichierVideo'], il m'ecrit array car les files renvoi un tableau qui contient le nom, une adresse d'un fichier temporaire (celui qui me pose probleme a l'origine ^^), et d'autre info comme le type et la taille mais pas l'adresse exact du fichier malheuresement.
Je confirme se que j'ai dit lors d'un post precedent, lorsque je lance ma page: Transfert.php, mon fichier temporaire qui contient mon fichier est detruit donc mon deplacement ne peux plus fonctionner.
fais un print_r ($tab);
pour voir le contenu du tableau
pâr contre je trouve cela bizar qu'il te supprime ton fichier...
pour voir le contenu du tableau
pâr contre je trouve cela bizar qu'il te supprime ton fichier...
Voila se que affiche ton print:
Array ( [name] => CHANGELOG.php [type] => application/octet-stream [tmp_name] => C:/Program Files/EasyPHP1-8\tmp\php16.tmp [error] => 0 [size] => 99938 );
Sinon j'ai reussit a contourné mon probleme, au lieu de faire du javascript et devoir appelle une autre page, j'ai demandé dans mon 1er formulaire: "Si le fichiez existe, voulez vous le remplacer?" grace a un type radio donc mon fichier temporaire n'est pas detruit et tout fonctionne.
Si tu a des idée de comment resoudre le probleme avec php et javascript, tu peux toujours les mettre, je pourrais peu etre apprendre des trucs.
Sinon merci de m'avoir aidé.
Array ( [name] => CHANGELOG.php [type] => application/octet-stream [tmp_name] => C:/Program Files/EasyPHP1-8\tmp\php16.tmp [error] => 0 [size] => 99938 );
Sinon j'ai reussit a contourné mon probleme, au lieu de faire du javascript et devoir appelle une autre page, j'ai demandé dans mon 1er formulaire: "Si le fichiez existe, voulez vous le remplacer?" grace a un type radio donc mon fichier temporaire n'est pas detruit et tout fonctionne.
Si tu a des idée de comment resoudre le probleme avec php et javascript, tu peux toujours les mettre, je pourrais peu etre apprendre des trucs.
Sinon merci de m'avoir aidé.