Bonjour à tous.
J'essaie actuellement d'uploader deux fichier en passant par un formulaire.
Mon code est le suivant :
Le formulaire fonctionne bien, mais la partie qui doit uploader mes deux fichiers me donne une erreur :
Attention : impossible de déplacer le fichier.
La partie en question a été faites selon le modèle http://docs.joomla.org/How_to_use_th...system_package.
Je suppose que l'erreur vient d'un soucis d'accès aux dossiers.
J'ai vérifié dans la configuration du site, l'accès aux dossiers est bien Modifiable.
Mais je ne trouve pas de solution. Je ne sais pas si le soucis vient du dossier temporaire (dont je ne connais pas l'adresse) ou du dossier de destination.
Quelqu'un aurait une idée ?
Merci d'avance pour vos réponses.
J'essaie actuellement d'uploader deux fichier en passant par un formulaire.
Mon code est le suivant :
Code PHP:
<?php
// No direct access
defined('_JEXEC') or die('Restricted access');
//jimport('joomla.application.component.view');
//Import filesystem libraries.
jimport('joomla.filesystem.file');
?>
<h1><?php echo $this->titre; ?></h1>
<?php
/*
********************************************************************************************
CONFIGURATION
********************************************************************************************
*/
// destinataire est votre adresse mail. Pour envoyer a plusieurs a la fois, separez-les par une virgule
$destinataire = 'l3sft@yopmail.com';
// copie a (envoie une copie au visiteur)
$copie = 'oui';
// Action du formulaire (si votre page a des parametres dans l'URL)
// si cette page est index.php?page=contact alors mettez index.php?page=contact
// sinon, laissez vide
$form_action = '';
// Messages de confirmation du mail
$message_envoye = "Votre message nous est bien parvenu !";
$message_non_envoye = "L'envoi du mail a echoue, veuillez reessayer SVP.";
// Message d'erreur du formulaire
$message_formulaire_invalide = "Verifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";
/*
********************************************************************************************
FIN DE LA CONFIGURATION
********************************************************************************************
*/
// On recupere tous les champs du formulaire.
$cv = 'cv';
$lettre = 'lettre';
$objet = 'Postulation pour une offre';
$message = 'message';
$err_formulaire = false; // sert pour remplir le formulaire en cas d'erreur si besoin
if (isset($_POST['envoi']))
{
if (($message != ''))
{
// les 4 variables sont remplies, on genere puis envoie le mail
$headers = 'From:'.$cv.' <'.$lettre.'>' . "\r\n";
//$headers .= 'Reply-To: '.$lettre. "\r\n" ;
//$headers .= 'X-Mailer:PHP/'.phpversion();
// Remplacement de certains caracteres speciaux
$message = str_replace("'","'",$message);
$message = str_replace("’","'",$message);
$message = str_replace(""",'"',$message);
$message = str_replace('<br>','',$message);
$message = str_replace('<br />','',$message);
$message = str_replace("<","<",$message);
$message = str_replace(">",">",$message);
$message = str_replace("&","&",$message);
// Envoi du mail
if (mail($destinataire, $objet, $message, $headers))
{
echo '<p>'.$message_envoye.'</p>';
}
else
{
echo '<p>'.$message_non_envoye.'</p>';
};
// Recupere les details des fichiers a uploader
// qui sont envoyes par le formulaire.
//$file = JRequest::getVar('file_upload', null, 'files', 'array');
$file_cv = JRequest::getVar('cv', null, 'files', 'array');
$file_lettre = JRequest::getVar('lettre', null, 'files', 'array');
// Nettoie le lien pour enlever les caracteres etranges comment les espaces
//$filename = JFile::makeSafe($file['name']);
$filename_cv = JFile::makeSafe($file_cv['name']);
$filename_lettre = JFile::makeSafe($file_lettre['name']);
// Selectionne le dossier source et destination
// JPATH_COMPONENT correspond a ...
$src = $file_cv['tmp_name'];
$src = $file_lettre['tmp_name'];
$dest = JPATH_ADMINISTRATOR.DS.'components'.DS.'com_adsmanager'.DS.'tables' . DS . $filename_cv;
$dest = JPATH_ADMINISTRATOR.DS.'components'.DS.'com_adsmanager'.DS.'tables' . DS . $filename_lettre;
//First check if the file has the right extension, we need pdf only
if ( strtolower(JFile::getExt($filename_cv) ) == 'pdf') {
if ( JFile::upload($src, $dest) ) {
//Redirect to a page of your choice
} else {
//Redirect and throw an error message
}
} else {
//Redirect and notify user file is not right extension
}
//First check if the file has the right extension, we need pdf only
if ( strtolower(JFile::getExt($filename_lettre) ) == 'pdf') {
if ( JFile::upload($src, $dest) ) {
//Redirect to a page of your choice
} else {
//Redirect and throw an error message
}
} else {
//Redirect and notify user file is not right extension
}
// Enregistrement dans la BDD
//connection au serveur
$cnx = mysql_connect( "localhost", "root", "" ) ;
//sélection de la base de données:
$db = mysql_select_db( "BDD" ) ;
$sql = "INSERT INTO postulation (id_user, nom_entreprise, id_offre, message) VALUES ( '$this->userid', '$this->entreprise', '$this->idoffre', '$message' ) " ;
//exécution de la requête SQL:
$requete = mysql_query($sql, $cnx) or die( mysql_error() ) ;
//affichage des résultats, pour savoir si l'insertion a marchée:
if($requete)
{
echo("L'insertion a été correctement effectuée") ;
}
else
{
echo("L'insertion à échouée") ;
}
}
else
{
// une des 3 variables (ou plus) est vide ...
echo '<p>'.$message_formulaire_invalide.'</p>';
$err_formulaire = true;
};
}; // fin du if (!isset($_POST['envoi']))
// Cette partie affiche le formulaire
if (($err_formulaire) || (!isset($_POST['envoi'])))
{
// afficher le formulaire
echo '
<form id="postule" method="post" action="'.$form_action.'" enctype="multipart/form-data">
<fieldset><legend>Pièces jointes :</legend>
<p><label for="cv">CV :</label><input type="file" id="cv" name="cv" value="'.stripslashes($cv).'" tabindex="1" /></p>
<p><label for="lettre">Lettre Motivation :</label>
<input type="hidden" name="MAX_FILE_SIZE" value="1048576" />
<input type="file" id="lettre" name="lettre" value="'.stripslashes($lettre).'" tabindex="2" /></p>
</fieldset>
<fieldset><legend>Votre message :</legend>
<p><label for="message">Informations supplémentaires :</label><textarea id="message" name="message" tabindex="4" cols="30" rows="8">'.stripslashes($message).'</textarea></p>
</fieldset>
<div style="text-align:center;"><input type="submit" name="envoi" value="Envoyer le formulaire !" /></div>
</form>';
};
?>
Le formulaire fonctionne bien, mais la partie qui doit uploader mes deux fichiers me donne une erreur :
Attention : impossible de déplacer le fichier.
La partie en question a été faites selon le modèle http://docs.joomla.org/How_to_use_th...system_package.
Code PHP:
/ Recupere les details des fichiers a uploader
// qui sont envoyes par le formulaire.
//$file = JRequest::getVar('file_upload', null, 'files', 'array');
$file_cv = JRequest::getVar('cv', null, 'files', 'array');
$file_lettre = JRequest::getVar('lettre', null, 'files', 'array');
// Nettoie le lien pour enlever les caracteres etranges comment les espaces
//$filename = JFile::makeSafe($file['name']);
$filename_cv = JFile::makeSafe($file_cv['name']);
$filename_lettre = JFile::makeSafe($file_lettre['name']);
// Selectionne le dossier source et destination
// JPATH_COMPONENT correspond a ...
$src = $file_cv['tmp_name'];
$src = $file_lettre['tmp_name'];
$dest = JPATH_ADMINISTRATOR.DS.'components'.DS.'com_adsmanager'.DS.'tables' . DS . $filename_cv;
$dest = JPATH_ADMINISTRATOR.DS.'components'.DS.'com_adsmanager'.DS.'tables' . DS . $filename_lettre;
//First check if the file has the right extension, we need pdf only
if ( strtolower(JFile::getExt($filename_cv) ) == 'pdf') {
if ( JFile::upload($src, $dest) ) {
//Redirect to a page of your choice
} else {
//Redirect and throw an error message
}
} else {
//Redirect and notify user file is not right extension
}
//First check if the file has the right extension, we need pdf only
if ( strtolower(JFile::getExt($filename_lettre) ) == 'pdf') {
if ( JFile::upload($src, $dest) ) {
//Redirect to a page of your choice
} else {
//Redirect and throw an error message
}
} else {
//Redirect and notify user file is not right extension
}
J'ai vérifié dans la configuration du site, l'accès aux dossiers est bien Modifiable.
Mais je ne trouve pas de solution. Je ne sais pas si le soucis vient du dossier temporaire (dont je ne connais pas l'adresse) ou du dossier de destination.
Quelqu'un aurait une idée ?
Merci d'avance pour vos réponses.
Commentaire