Php + deplacer un fichier

Résolu/Fermé
Camuke Messages postés 224 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 12 août 2011 - 12 juin 2007 à 09:34
 Utilisateur anonyme - 12 juin 2007 à 16:30
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.

12 réponses

Utilisateur anonyme
12 juin 2007 à 10:24
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...
0
Camuke Messages postés 224 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 12 août 2011 88
12 juin 2007 à 10:45
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
0
Utilisateur anonyme
12 juin 2007 à 12:22
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
0
Camuke Messages postés 224 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 12 août 2011 88
12 juin 2007 à 12:34
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
12 juin 2007 à 12:50
ah attend tu veux récuperer l'adresse url de la video selectionner par input type file? c'est ça?
0
Camuke Messages postés 224 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 12 août 2011 88
12 juin 2007 à 12:52
OUI ^^
0
Utilisateur anonyme
12 juin 2007 à 13:54
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!
0
Camuke Messages postés 224 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 12 août 2011 88
12 juin 2007 à 14:01
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.
0
Camuke Messages postés 224 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 12 août 2011 88
12 juin 2007 à 14:34
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.
0
Utilisateur anonyme
12 juin 2007 à 14:37
fais un print_r ($tab);

pour voir le contenu du tableau
pâr contre je trouve cela bizar qu'il te supprime ton fichier...
0
Camuke Messages postés 224 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 12 août 2011 88
12 juin 2007 à 16:19
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é.
0
Utilisateur anonyme
12 juin 2007 à 16:30
C'est bien pensé ^^' pourquoi faire simple quand on peut faire compliquer!
0