Salut tout le monde.
Je développes un blog de photo. Je fais actuellement l'interface d'administration et j’avoue que je cale un peut (un peu beaucoup) sur l'envoi de fichier.
Alors voilà comment ça marche:
J'ai besoin d'envoi fichier pour l'ajout d'une photo. Pour cela, pas de problème, un formulaire contenant le nom de la photo, l'album de la photo et gloups... un bouton d'envoi de fichier. Bon voilà le formulaire:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
<form method="post" action="photo_create.php" enctype="multipart/form-data">
 
    <label for="nom"> Nom de la photo (obligatoire) :</label> <br/>
    <input type="text" name="nom" id="nom" size="50px" maxlength="255" required /> <br />
 
    <label for="album"> Indiquez le nom de l'album dans lequel apparaitra cette photo (si l'album n'existe pas, il sera créé ; alors attention aux fautes de frappes !) :</label> <br />
    <input type="text" id="album" name="album" size="50" required /> <br />
 
    <label for="file"> Selectionnez la photo à envoyer. </label> <br />
    <input type="file" id="file" name="file" required />
    <br />
 
    <input type="submit" value="Envoyer" />
 
    </form>
Pas d'erreur? Ça n'en a pas m'air (selon moi).

Maintenant passons à notre cher <italique>photo_create.php</italique>.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
 
<?php
// Vérifions que le champ du fichier a bien été rempli
	if (isset($_FILES['file']) AND $_FILES['file']['error'] == 0)
	{
	// Testons si l'extension est autorisée 
                $infosfichier = pathinfo($_FILES['file']['name']);
                $extension_upload = $infosfichier['extension'];
                $extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png');
                if (in_array($extension_upload, $extensions_autorisees))
                {
                // On peut valider le fichier et le stocker définitivement
                        // J'ai besoin du nom du fichier
						$nom = basename($_FILES['file']['name']);
                        // je définis une variable path. La photo sera envoyé dans un dossier parent nommé photos puis un dossier sera créé portant le nom de l'album, s'il existe déjà, et bien la photo est seulement ajouté dans le dossier. C'est possible ou pas?
						$path = '../photos/' .$_POST['album'] '/' .$nom;
                        // Enfin, on bouge la photo
                        move_uploaded_file($_FILES['file']['tmp_name'], $path);
                        echo "L'envoi a bien été effectué !";
 
	// On ajoute la photo dans la base de donnée
    include ("../pdo.php");
    $req = $bdd->prepare('INSERT INTO photo(nom, album, url, vote) VALUES(:nom, :album, :url, :vote)');
    $req->execute(array(
	'nom' => $_POST['nom'],
	'album' => $_POST['album'],
	'url' => $path,
    'vote' => "0"
	));
    echo 'Votre photo a été ajouté avec succès, elle apparaitra désormais sur votre site';
	?>
    <a href="photo.php"> Retourner à la liste des photos</a>
    <?php
	}
	}
	else
	{
	echo 'Une erreur est survenue lors de l\'envoi du fichier';
	}
Mais quand je remplis le formulaire et que j'appuie sur le bouton envoyer, ce n'est pas une erreur php qui s'affiche mais ça:

Erreur serveur
Le site Web a rencontré une erreur lors de l'extraction de http://monoeil.zegamers.org/admin/photo_create.php. Cela peut être dû à une opération de maintenance ou à une configuration incorrecte.
Voici quelques suggestions :
Actualisez cette page Web ultérieurement.
Erreur HTTP 500 (Internal Server Error) : Une situation inattendue s'est produite tandis que le serveur tentait de traiter la demande.
Quelqu'un pourrait m'éclairer svp?
Merci d'avance...