Jump to content

[Résolu] move-upload_file inexistant


letty

Recommended Posts

Bonjour,

je tente de développer seule un module qui requiert côté admin l'upload d'une image. J'arrive parfaitement à intégrer mes données dans la table prévue à cet effet mais impossible d'uploader mon image dans mon dossier que ce soit à la racine du module, ou dans un dossier "mesimages" dans le répertoire principal img.

Voici la partie de code du formulaire concernant l'upload :

<INPUT TYPE="HIDDEN" NAME="MAX_FILE_SIZE" VALUE="500000">
<INPUT NAME="mon_img" TYPE="FILE"> // pour la partie formulaire



Par soucis de lisibilité j'ai enlevé le code d'insertion pour insérer les données dans la BDD

private function _postProcess()
 {
$dirname = $this->_modulePath . 'img/';

move_uploaded_file($_FILES['fichier']['tmp_name'], $dirname.'/$_FILES["fichier"]["name"]');
 }



J'ai tout testé pour $chemin_destination, j'ai beau vider le cache, rafraîchir etc... aucune image n'apparaît. J'ai même testé avec le chemin complet http://locahost:8888/maboutique/modules/monmodule/img... RIEN!

Je précise que je travaille en local! Mais je ne vois pas mon erreur. Avez-vous une idée, une piste à me suggérer ?

Merci par avance :)

Link to comment
Share on other sites

Regarde du côté de la configuration de php.ini

Essentiellement dans cette section il te faut avoir

; Whether to allow HTTP file uploads.
file_uploads = On

; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
upload_tmp_dir = /tmp

; Maximum allowed size for uploaded files.
upload_max_filesize = xxxM

file_uploads = On active l'upload
/tmp doit avir des droits ouverts en ecriture pour apache

upload_max_filesize = xxxM c'est la taille xxx en Mega du plus gros fichier uploadable

Link to comment
Share on other sites

Bonjour,

petit détail qui a peut être son importance, dans ta page de POST, tu as

move_uploaded_file($_FILES['fichier']['tmp_name'], $dirname.'/$_FILES["fichier"]["name"]');



alors que ton champ du formulaire est

<INPUT NAME="mon_img" TYPE="FILE">



la page de post devrait être :

move_uploaded_file($_FILES['mon_img']['tmp_name'], $dirname.'/'.$_FILES["mon_img"]["name"]);



non ?

Link to comment
Share on other sites

Merci pour vos réponses, j'ai effectué les changements que vous m'avez indiqué mais rien ne se passe. Mon dossier img reste vide :( J'ai pourtant mis mon dossier en CHMOD777

C'est à n'y rien comprendre... Je sais que j'ai toujours eu des soucis en local pour du upload mais là je m'aide d'autres modules pour développer et qui marche donc je ne vois pas pourquoi ça peut bloquer. Ou bien, étant sur MAC, j'ai mal configuré mes autorisations de dossier...

Ou alors est-ce qu'il n'est pas possible de demander dans une fonction 2 requêtes ?
le code complet en _postProcess

private function _postProcess(){

if(Tools::isSubmit('submit')){

 $img = Tools::getValue('mon_img');
 $id_product = Tools::getValue('id_product');
$dirname = $this->_modulePath . 'img/';

       move_uploaded_file($_FILES['mon_img']['tmp_name'], $dirname.'/'.$_FILES["mon_img"]["name"]);
       mysql_query("INSERT INTO ps_monmodule(`id_product`, `img`) VALUES ('$id_product','$img')");
}
}

Link to comment
Share on other sites

Je rejoint BVince qui a tout à fait raison concernant le nom du champ.
Mais tu sembles avoir corrigé et cela ne marche toujours pas...
Je me demande si ton path est correct (je n'ai pas trop le temps de vérifier), or les move de fichiers se font en path absolu 'serveur'
tu peux essayer ça :

$dest =_PS_ROOT_DIR_ . '/modules/' . $this->name . '/img/';
move_uploaded_file($_FILES['mon_img']['tmp_name'],$dest.$_FILES["mon_img"]["name"]);

Link to comment
Share on other sites

Merci de ta réponse. J'ai testé mais l'image est envoyé nul part :( Je l'aurai, je l'aurai! ... ou pas!

EDIT : ça marche !!! Et j'ai honte d'avouer mon erreur de débutante... Forcément ça risquait pas de marcher en oubliant l'attribut enctype="multipart/form-data" dans mon formulaire. Ça servira à d'autres et je ne ferais plus la con**rie :-D

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...