URGENT problème avec copy() de PHP - PHP - Programmation
Marsh Posté le 11-07-2003 à 17:05:51
Bonne question !!!!
Je ne sais pas, mais puis-je le voir avec php_info() ???
Marsh Posté le 11-07-2003 à 17:08:00
t'es sous nt ou 9x?
si t'es sous nt, regardes les droits du répertoire
Marsh Posté le 11-07-2003 à 17:09:08
En local, je suis sur Win XP. Mais pour le serveur online, je sais pas !
Marsh Posté le 11-07-2003 à 17:14:54
Si vous voulez voir l'erreur exacte avec le phpinfo() allez : http://www.univ-montp2.fr/~lcobs/a [...] on/aaa.php
Marsh Posté le 11-07-2003 à 17:21:01
a priori, le serveur serait plutot un unix/linux
donc c:\ c'est pas gagné
met un chemin relatif pour voir
Marsh Posté le 11-07-2003 à 17:24:54
Je suis entrain de tester avec un chemin relatif. Je répond dans 3 minutes.
Marsh Posté le 11-07-2003 à 17:33:53
J'y arrive pas. Par contre si je met un chemin relatif exemple : images/titre.jpg j'ai pas d'erreur unable to open, mais j'ai par contre un erreur unable to create.
Mais unable to create est probablement dû à une mauvais adresse d'upload.
Vous avez pas une unité pour mon problème de départ, c'est à dire comment ne pas avoir le unable to open pour les fichiers du disque dur c:\.
Marsh Posté le 11-07-2003 à 17:36:52
petite question: "$adresse_source = "c:\aaaa.jpg";" est dans ton script sur le serveur??
Marsh Posté le 11-07-2003 à 17:41:18
Je comprends pas bien ta question, mais si tu veux savoir si la ligne :
$adresse_source......
est dans le même fichier, alors c'est oui. Ce n'est pas un appel, et même en mettant
copy("c:\aaaa.jpg","/~lcobs/image.jpg" );
ca ne marche pas.
Marsh Posté le 11-07-2003 à 17:43:58
bah oui, c'est normal
ton script s'exécute sur le serveur, donc il ne connaît pas c:
amha, tu devrais lire un petit tuto pour l'upload de fichier
tu peux montrer le code complet?
Marsh Posté le 11-07-2003 à 17:47:07
C'est ça le code complet :
copy("c:\aaaa.jpg","/~lcobs/image.jpg" );
Mais comment je peux faire alors, pour autoriser les uploads en provenance du c:\.
Merci de ton aide Dropsy
Marsh Posté le 11-07-2003 à 17:53:41
de rien
il faut que, dans un premier temps, tu crées un formulaire qui permet de sélectionner un fichier.
un ptit tuto:
http://www.toutestfacile.com/php/c [...] upload.php
ou
http://www.asp-php.net/tutorial/asp-php/upload.php
Marsh Posté le 11-07-2003 à 18:00:03
Merci pour les adresses, je vais les lire.
Mais j'ai déjà créé un formulaire, avec une sélection file, et on choisi dans son disque dur le fichier souhaité. Je l'ai pas montré dans le code, parce que ça fait que compliquer.
Le code que j'ai montré ici est un exemple, avec le choix c:\aaaa.jpg comme chemin. Normalement ce chemin on le tape pas, il faut juste sélectionner le fichier avec le formulaire.
OUPS, j'sais pas si je suis clair ?!?!?!
Marsh Posté le 11-07-2003 à 18:04:36
une fois que ta choisi un fichier et valider le formulaire, le fichier est envoyé sur le serveur, c'est ce fichier temporaire qu'il faut que tu copie, il est stocké dans $_FILES['userfile']['tmp_name']
http://www.php.net/features.file-upload
Marsh Posté le 11-07-2003 à 18:12:30
et dans ce cas, ya plus k'a utiliser move_uploaded_file()
Marsh Posté le 11-07-2003 à 18:18:43
Si je comprends bien, du fait que le formulaire a comme attribut : enctype="multipart/form-data" alors cela veut dire que les fichiers appelés par un champ file sont directement uploadés dans un répertoire temporaire, sans autres lignes de code ?!?
Donc après nous on a qu'à copier le fichier temporaire ?
Est-ce que c'est ça dropsy STP ?
Marsh Posté le 11-07-2003 à 18:20:13
Wallman a écrit : Si je comprends bien, du fait que le formulaire a comme attribut : enctype="multipart/form-data" alors cela veut dire que les fichiers appelés par un champ file sont directement uploadés dans un répertoire temporaire, sans autres lignes de code ?!? |
tout à fait, soit à la mains soit avec la fonction de yack
Marsh Posté le 11-07-2003 à 18:21:41
MERCI BEAUCOUP, JE VAIS ESSAYER !
Marsh Posté le 11-07-2003 à 21:35:26
J'EN AI MARRE !
J'ai essayé avec la fonction is_uploaded_file() et rename(), mais ça ne marche pas. Pourtant, j'ai entièrement copié/collé le code du tutorial.
Pourtant il y a une erreur :
Warning: Rename failed (Invalid cross-device link) in /home/www/lcobs/public_html/administration/fileupload.php on line 15
Voilà le code :
Fichier 1.php
<html>
<body>
<form enctype="multipart/form-data" action="fileupload.php" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="100000">
Transfère le fichier <input type="file" name="monfichier">
<input type="submit">
</form>
</body>
</html>
Fichier fileupload.php
<html>
<body>
<?
print ($_FILES["monfichier"]["tmp_name"]."---".$_FILES["monfichier"]["name"]);
$repertoireDestination = "images/";
$nomDestination = $_FILES["monfichier"]["name"];
// Pour raison de sécurité nous ajouterons aux fichiers
// portant une extension .php .php3, l'extension .txt
if (eregi(".php", $nomDestination)) {
$nomDestination .= ".txt";
}
if (is_uploaded_file($_FILES["monfichier"]["tmp_name"])) {
if (rename($_FILES["monfichier"]["tmp_name"],$repertoireDestination.$nomDestination))
{
echo "Le fichier temporaire ".$_FILES["monfichier"]["tmp_name"].
" a été déplacé vers ".$repertoireDestination.$nomDestination;
} else {
echo "Le déplacement du fichier temporaire a échoué".
" vérifiez l'existence du répertoire ".$repertoireDestination;
}
} else {
echo "Le fichier n'a pas été uploadé (trop gros ?)";
}
?>
</body>
</html>
!!! AIDEZ MOI S'IL VOUS PLAIT !!!
Marsh Posté le 11-07-2003 à 21:43:44
C'est bon, j'ai trouvé un autre moyen, en mettant la fonction copy ça marche NIKEL !
Marsh Posté le 11-07-2003 à 21:52:43
j'ai modifié:
$repertoireDestination = "./images/"; |
rajout de ./ pour le nom du dossier
et
copy($_FILES["monfichier"]["tmp_name"],$repertoireDestination.$nomDestination) |
copy au lieu de rename
et ça marche chez moi (apache2 / php4.2.3)
edit: le temps de bidouiller tes scripts, et
Marsh Posté le 11-07-2003 à 21:55:16
dropsy a écrit : j'ai modifié:
|
Marsh Posté le 13-07-2003 à 03:10:58
le fichier temporaire s'efface-t-il automatiquement quand le script est fini?
Marsh Posté le 13-07-2003 à 03:12:34
avec move_uploaded_file oui comme son nom l'indique
si tu ne fais que le copier, il faut attendre qu'il soit effacé par ton hébergeur...
Marsh Posté le 13-07-2003 à 03:15:01
et l'herbegeur fera ça quand? (je suis chez free) c'est un repertoire a la base du site?
Marsh Posté le 13-07-2003 à 03:28:41
c dans un répertoire temporaire chez free
/tmp/ par exemple, qui est effacé automatiquement tous les x minutes
tu dois pouvoir afficher le chemin ou est stocké le fichier avec echo $_FILES['variable']['tmp_name'];
Marsh Posté le 13-07-2003 à 03:33:32
et un truc que je me suis toujours demandé: comment se déroule l'upload? le navigateur affiche-t-il une barre de progression?
Marsh Posté le 11-07-2003 à 17:02:23
Bonjour,
j'ai un problème urgent, je n'arrive pas à comprendre pourquoi mon script d'upload ne marche pas. Pourtant, il marche en local ?!?!?
Voilà mon script :
$adresse_source = "c:\aaaa.jpg";
copy($adresse_source,"http://www.univ-montp2.fr/~lcobs/images/image.jpg" );
Je l'ai beaucoup simplifié, mais c'est ça.
L'erreur, est : unable to open "c:\aaaa.jpg" à la ligne du copy()
Pourriez-vous m'aider, car je ne vois pas d'où provient l'erreur puisque je sais que le fichier aaaa.jpg situé dans c existe bien.
Merci !