upload de fichier

Répondre
sparh
le 22/07/2006 à 22:28
sparh
salut,
à nouveau besoin d'aide ;)
Voilà, je voudrai proposer d'uploader des jeux sur mon site.
Il faudra donc uploader 1 fichier .swf (obligatoire) et 2 fichiers photos (non obligatoire)
J'ai réussis à faire un bout de script qui permet d'uploader un fichier; mais pour les trois j'm'emméle un peu!
voilà le code qui permet d'uploader les données:
<?php
//connexion a la base de donnée
include("config.php");
$date = date("Y-m-d H:i");
$categorie1 = $_POST['categorie1'];
$categorie2 = $_POST['categorie2'];
$jeu = $_POST['jeu'];
$description = $_POST['description'];
if ($action == "upload")
{
if (isset ($image1) && $HTTP_POST_FILES["image1"]["error"]==0 && $HTTP_POST_VARS['MAX_FILE_SIZE']>=$HTTP_POST_FILES["image1"]["size"])
// les vérifications d'usage (la variable existe, pas d'erreur et la taille est correcte )
{
$nom=$HTTP_POST_FILES["image1"]["name"];
// récupération du nom du fichier
$point=strrpos($nom,"."); // on recherche le dernier point dans le nom du fichier
if (!$point) $ext=""; else $ext=strtolower(substr($nom,$point));
// pour récuperer l'extension du fichier
if (($ext==".jpg") || ($ext==".gif" )) // pour l'exemple je ne garde que ces 2 extensions valides
{

$repertoire_upload="../Image/Jeux/";

$nouveau_nom=$repertoire_upload.$nom;
while (file_exists($nouveau_nom))
{
$nouveau_nom=$repertoire_upload.$nom;
}// fin while
if (@move_uploaded_file($image1,$nouveau_nom)) echo "<b>Téléchargement réussi</b>"; else echo " Echec du transfert";
// le point crucial qui tranfert le fichier temporaire en fichier permanent avec @ devant pour éviter un warning PHP en cas d'échec

}// fin if ext
else
{
$erreur="le type de fichier est invalide ( seulement .jpg et .gif ).";
echo $erreur;
}// fin else ext
}// fin du premier if
else echo "Vérifier le formulaire d'envoi de fichier ( la taille du fichier est limité à ". $HTTP_POST_VARS['MAX_FILE_SIZE']." )";


$db = mysql_connect($serveur, $login, $password);
mysql_select_db($base,$db);
$query = "INSERT INTO Jeux (jeux, image1, image2, texte, categorie1, categorie2, vote, date, adresse) VALUES ('$jeu', '$nouveau_nom', '$nouveau_nom2', '$description', '$categorie1', '$categorie2', '$adresse', '$date', '$adresse','$pseudo')";
$result = mysql_query($query);
mysql_close($db);
}
?>

Voilà, donc dans le cas présent j'arrive à uploader "image1" mais pas plus. Il faut donc répéter la démarche pour l'image2 (même format jpg ou gif) puis pour le fichier swf.
Voilà, si qqun avait un peu de temps,
merci d'avance
sparh
le 23/07/2006 à 09:56
sparh
j'utilise php 4
Par contre pour le tuto que tu m'as envoyé,
rien à faire je l'ai tourné dans tous les sens, simple ou multiple, ca marche pas!
sparh
le 23/07/2006 à 11:32
sparh
bon ca va, ca marche il y avait une petite erreur:
faut remplacer
foreach ($_FILES['photo']['name'] as $key => $value) {
par
foreach ($_FILES['fichier']['name'] as $key => $value) {

Voilà pour l'envoi multiple (pour moi mes 2 photos) mais maintenan il faut placer un envoi simple pour le jeu (fichier .swf qui ira dans un autre répertoire) et là j'ai encore du mal..
moogli
le 23/07/2006 à 12:05
moogli
ben oui faut adapter .....

quand au reste tu up les trois en même temps et tu déplace la ou tu veut grace au move_update_file, pour faire la différence il te suffit par exemple de te baser sur l'extension, ou le type mime !!!!

@+
Il en faut peu pour être heureux !!!!!
sparh
le 23/07/2006 à 12:50
sparh
pas con ;)
je m'y met, j vous donne surement des nouvelles ;)
sparh
le 23/07/2006 à 14:36
sparh
bon je bloque dès le début!
j'arrive pas à contrôler la condition:
$type="image/gif"
les conditions size<=20500 && $width<=100 && $height<=100 ca c ok mais pas le type de fichier
(j'arrive à uploader n'importe quel fichier pourvu qu'il fasse moins de 20ko)

Voilà le début du code:
si vous avez des idées
<?php
if (isset($_FILES['fichier']))
{
//$_FILES existe
foreach ($_FILES['fichier']['name'] as $key => $value) {
$fichier=$value;//nom reel de l'image
$size=$_FILES['fichier']['size'][$key]; //poids de l'image en octets
$tmp=$_FILES['fichier']['tmp_name'][$key];//nom temporaire de l'image (sur le serveur)
$type=$_FILES['fichier']['type'][$key];//type de l'image
//On récupère la taille de l'image
list($width,$height)=getimagesize($tmp);
if (is_uploaded_file($tmp)) //permet de vérifier si le fichier a été uplodé via http
{
//vérification du type de l'img, son poids et sa taille
if ($type="image/gif" && $size<=20500 && $width<=100 && $height<=100 )
{
Bzh
le 23/07/2006 à 14:39
Bzh
Il faut se baser sur l'extention du fichier pour savoir son type.

Utilise les expressions régulières.

Si l'extention du fichier est: .gif,.png et .jpg c'est OK !!!

Voili, bonne continuation.
Bzh
le 23/07/2006 à 14:42
Bzh
Heu, ou sinon smiley remplace

<?php
//vérification du type de l'img, son poids et sa taille
if ($type="image/gif" && $size<=20500 && $width<=100 && $height<=100 )
?>


par

<?php

//vérification du type de l'img, son poids et sa taille
if ($type == "image/gif" && $size<=20500 && $width<=100 && $height<=100 )

?>


J'ai lu un peu trop vite ton code.

Bye...
sparh
le 23/07/2006 à 15:36
sparh
merci,
est il possible d'autoriser gif et jpg
image/jpeg et non juste gif??
Répondre
LoadingChargement en cours