Submitted by lfourny@drupalfr.org on
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é !";
}
}
Avec les balises <code>
Permalien Soumis par haza le 8 Septembre, 2008 - 17:40
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,
);
....