problème champ upload

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

bonjour,

j'essaie désespérément de transférer un fichier avec un champ de type files mais rien à faire. dans le meilleur des cas je récupère la valeur 1.

copie de mon code.

//***** fonction appel depuis menu du formulaire de transfert de fichier xml
function view_form() {

return drupal_get_form('import_form');

}

//**** fonction formulaire
function import_form() {

$form = array();

$form['filexml'] = array(
'#type'=> 'file',
'#title' => 'fichier',
'#size' => 50,
'#description' => t("Selectionnez un fichier Xml."),
);

$form['nom'] = array(
'#type'=> 'textfield',
'#title' => 'Nom',
'#maxlength' => 50
);

$form['submit'] = array(
'#type' => 'submit',
'#value' => 'Enregistrer'
);

return $form;
}

//*******************************************
// validation du form et enregistrement fichier
//*******************************************

function import_form_validate($form_id,$form_values)
{
/* On récupère le nom du fichier /
$fichier = basename($_FILES['filexml']['name']);
/
On récupère l'extension du fichier, ex : ".xml" */
$extension = strrchr($fichier, '.');

if ( $extension != 'xml')
{
form_set_error('Fichier',print($file['filexml']['name']));
}

}

function import_form_submit($form_id,$form_values)
{

/* On récupère le nom du fichier */
$fichier = basename($_FILES['filexml']['name']);

/* On récupère la source à télécharger */
$source = $_FILES['filexml']['tmp_name'];

/* On définie dans quel répertoire sera stocker le fichier */
$dossier = "files/perso/".$fichier; // Attention, les répertoires doivent exister et être en droit 755(minimum)

if ( move_uploaded_file($source,$dossier) ) //Si la fonction renvoie TRUE, l'upload à fonctionné
{
chmod ( $dossier , 0755 ); // Droit du fichier uploadé
echo $fichier.' a été uploadé.';

}
else //Sinon (la fonction renvoie FALSE).
{
echo $fichier."n'a pas été uploadé !";
}

}

Forum : 
Version de Drupal : 

Avec les balises <code> ca serait quand même plus lisible ...

Rajoutes déjà un $form['#attributes']['enctype'] = 'multipart/form-data'; dans la definition du form.

exemple sur un truc perso :

  $form['#attributes']['enctype'] = 'multipart/form-data';
    $form['upload_file'.$delta]['pict'][$delta] = array (
    '#type' => 'file',
    '#title' => t('picture'),
    '#size' => 30,
    );

....