8797 sujets

Développement web côté serveur, CMS

Bonjour,
Je suis actuellement en train de finaliser un projet dans le cadre de mon stage mais je butte sur un problème qui me parais bien mystérieux, voici une petite description:

Framework: Zend 1.11.1

Tâche à accomplir: générer automatiquement un contrat de location au format PDF (j'utilise pour cela html2pdf) et le stocker sur le serveur (ça c'est bon Smiley biggthumpup )

Reste à faire: donner la possibilité aux utilisateurs de télécharger ce PDF.

Problème: le lien de téléchargement ne s'affiche que si file_exists() renvoie true mais lorsqu'on clique sur le lien on se mange un gros 404 Not found The requested URL was not found on this server. ("Le fichier existe-il?" "Oui" "Télécharge le" "Il n'existe pas!")

Voici les quelques bouts de code qui sont utilisés:

Pour l'enregistrement du PDF sur le serveur:

$datas['dirName'] = APPLICATION_PATH . '/../public/export/contrat/' . $datas['idBooking']; /*APPLICATION_PATH est un define qui correspond au dossier application du serveur (ex:  http://local.monsite.fr/Users/peuwpeuw/Sites/monsite/app/   en local)*/
$datas['fileName'] = 'contrat_' . md5(date("Y-m-d H:i:s")) . '.pdf';
$datas['outputMode'] = 'F';


$html2pdf = new HTML2PDF('P','A4','fr');
$html2pdf->pdf->SetDisplayMode('fullpage');
$html2pdf->WriteHTML($this->_content);
if(!is_dir($this->_datas['dirName']))
  {
     mkdir($this->_datas['dirName']); //Creer le dossier ou va être stocker le PDF
     chmod ($this->_datas['dirName'], 0777);
   }
$filePath = $this->_datas['dirName'] . '/' . $this->_datas['fileName'];
$html2pdf->Output($filePath, $this->_datas['outputMode']); /*méthode de html2pdf permettant de générer le PDF et de specifier sa sortie (ici $this->_datas['outputMode'] = "F" => sauvegarder sur le serveur dans le dossier indiqué par le path)*/
chmod ($filePath, 0777);


Et voici le code que j'utilise pour le lien de téléchargement:

$filePath = APPLICATION_PATH . '/../public/export/contrat/' . $v['id_flat_book'];
if (is_dir($filePath)):
	if (($contractDir = opendir($filePath)) != FALSE):
		$fileName = array();
		while ($fileName[] = readdir($contractDir));
		if (file_exists($filePath . '/' . $fileName[2])) ?>
			<td><a href="<?php echo $filePath . '/' . $fileName[2] ?>" ><? echo $v['id_flat_book']/*FIX*/ ?></a></td>
		<?php
	endif;
endif;


Je n'arrive pas à cerner le problème alors si quelqu'un pouvait me filler un coup de patte je lui en serais reconnaissant Smiley smile
Modifié par peuwpeuw (16 Nov 2012 - 17:27)
Modérateur
Salut,

Je ne connais pas bien zend F. Cependant, et de mémoire en natif, il faut paramétrer un header. Peut être que je m'avance un peu trop. Mais il me semble que c'est un truc dans le style. Fait une petite recherche de ce côté là.
Ok finalement le problème venait de moi, le dossier que j'utilisais pour stocker les PDF n'était pas le bon, le problème a été résolu en changeant pour un dossier public, my bad -.-'