J'ai crée un site web en PHP avec un système d'article mais je n'arrive pas a uploader les images dans un dossier "miniatures". Mon fichier de rédaction est situé dans un espace admin ( .htaccess donc ... ) et le dossier miniatures sur la première branche du site.
Lorsque j'utilise la fonction, j'obtiens ça :
Warning: move_uploaded_file(http://monsite.com/fr/miniatures/16.jpg): Failed to open stream: HTTP wrapper does not support writeable connections in /home/cycling/www/fr/admin/redaction.php on line 22
Warning: move_uploaded_file(): Unable to move "/home/cycling/admin/tmp/php7g580s" to "http://monsite.com/fr/miniatures/16.jpg" in /home/cycling/www/fr/admin/redaction.php on line 22
Voici mon code de redaction.php
if(isset($_POST['article_titre'], $_POST['article_contenu'])) {
if(!empty($_POST['article_titre']) AND !empty($_POST['article_contenu'])) {
$article_titre = htmlspecialchars($_POST['article_titre']);
$article_contenu = htmlspecialchars($_POST['article_contenu']);
var_dump($_FILES);
var_dump(exif_imagetype($_FILES['miniature']['tmp_name']));
$ins = $bdd->prepare('INSERT INTO cycling_articles (titre, contenu, date_time_publication) VALUES (?, ?, NOW())');
$ins->execute(array($article_titre, $article_contenu));
$lastid = $bdd->lastInsertId();
if(isset($_FILES['miniature']) AND !empty($_FILES['miniature']['name'])) {
if(exif_imagetype($_FILES['miniature']['tmp_name']) == 2) {
$chemin = 'http://monsite.com/fr/miniatures/'.$lastid.'.jpg';
move_uploaded_file($_FILES['miniature']['tmp_name'], $chemin);
} else {
$message = 'Votre image doit être au format jpg';
}
}
$message_reussite = 'Votre article a bien été posté, cliquez <a href="http://monsite.com/fr/article.php?id='.$lastid.'">ici</a> pour voir le resultat';
}
else {
$message = 'Veuillez remplir tous les champs';
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Rédaction</title>
<meta charset="utf-8">
</head>
<body>
<form method="POST" enctype="multipart/form-data">
<input type="text" name="article_titre" placeholder="Titre" /><br /><br />
<textarea name="article_contenu" placeholder="Contenu de l'article" rows="8" cols="40"></textarea><br />
<input type="file" name="miniature">
<input type="submit" value="Envoyer l'article" />
</form>
<br />
<?php if(isset($message)) { echo $message; }
if (isset($message_reussite)) {
echo $message_reussite;
}?>
</body>
</html>
J'ai compris que c'est du au protocole HTTP mais comment résoudre ce probleme ?
Merci d'avance
- Edité par PaulusCaesar 25 novembre 2021 à 19:22:19
Bonjour le message d'erreur à l'air d'indiqué que la fonction move_upload_file ne supporte pas une URL en tant que chemin elle attend surement un chemin absolue vers un dossier.
Pour réglé le problème normalement tu doit pouvoir utilisé un chemin absolue vers le dossier dans le quel tu souhaites stocké ton fichier du genre:
Rebonjour si tu ne veut pas que l'image soit dans le dossier admin tu peut la mettre ailleurs, le chemin que je t'ai donné dans le code d'exemple était illustratif, par exemple si tu ton fichier PHP qui fait le traitement de l'image et situé à la racine du dossier admin tu pourrais indiqué comme chemin:
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
suggestion de présentation.
suggestion de présentation.