Lire une pièce jointe dans une page php

Tikate Messages postés 7 Date d'inscription samedi 24 mai 2003 Statut Membre Dernière intervention 2 août 2005 - 21 avril 2005 à 17:15
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 - 29 avril 2005 à 18:19
Bonsoir,

Je bosse en php.
j'envoie un mail à partir d'un formulaire, j'uploade une pièce jointe, jusque là tt va bien. Je réceptionne mes mails sur une page mais comment faire pour lier un message à sa pièce jointe? et comment l'afficher?

4 réponses

JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
21 avril 2005 à 18:02
Lu, j'ai fais ce code hier :


View.php

<?php

$mbox = imap_open (host, login, password) or die('Connexion impossible : ' . imap_last_error());

$view = 1; // ID du message




$info = imap_fetchstructure($mbox, $view);

$numparts = count($info->parts);

$i=0;

$fichier = '';

if ($numparts > 1) {

foreach ($info->parts as $key=>$part) {

if (isset($part->disposition) && $part->disposition == "INLINE") {

printf("Inline message has %s lines
", $part->lines);

} else if (isset($part->disposition) && $part->disposition == "attachment") {

$i++;

$fichier = '
Fichier' . (($i <= 1) ? '' : 's' ) . ' (' . $i . ') : ';

$fichier .= '[javascript:void(0) . urlencode($part->dparameters[0]->value) . '&key=' . ($key+1) . '&view=' . $view . '\' . \'dl\' . \'height=300px . width=400px;\')">' . $part->dparameters[0]->value . ']' . (($key != $i) ? ' . ' : '' );

}

}

}

?>



Dl.php



<?php

function type($file) {



$file_extension = strtolower(substr(strrchr($file,'.'),1));



//This will set the Content-Type to the appropriate setting for the file

switch( $file_extension ) {

case 'pdf': $ctype='application/pdf'; break;

case 'exe': $ctype='application/octet-stream'; break;

case 'zip': $ctype='application/zip'; break;

case 'doc': $ctype='application/msword'; break;

case 'xls': $ctype='application/vnd.ms-excel'; break;

case 'ppt': $ctype='application/vnd.ms-powerpoint'; break;

case 'gif': $ctype='image/gif'; break;

case 'png': $ctype='image/png'; break;

case 'jpeg': $ctype='image/jpeg'; break;

case 'jpg': $ctype='image/jpg'; break;

case 'mp3': $ctype='audio/mpeg'; break;

case 'wav': $ctype='audio/x-wav'; break;

case 'mpeg':

case 'mpg':

case 'mpe': $ctype='video/mpeg'; break;

case 'mov': $ctype='video/quicktime'; break;

case 'avi': $ctype='video/x-msvideo'; break;

case 'htm':

case 'html': $ctype='text/html'; break;

case 'php':

case 'txt': $ctype='text/plain'; break;

default: $ctype='application/force-download'; break;

}



return $ctype;

}



$config = parse_ini_file('config.ini');

$mbox = imap_open ($config['host'], $config['login'], $config['password']) or die('Connexion impossible : ' . imap_last_error());



$key = $_GET['key'];

$view = $_GET['view'];

if(isset($_GET['action'])) {

$body = imap_fetchbody($mbox, $view, $view);

$action = $_GET['action'];

if($action == 'o') {

header('Content-Type: ' . type(urldecode($_GET['name'])));

echo base64_decode($body);

} else {

header('Pragma: public');

header('Expires: 0');

header('Cache-Control: must-revalidate, post-check=0, pre-check=0');

header('Cache-Control: public');

header('Content-Description: File Transfer');

header('Content-Type: ' . type(urldecode($_GET['name'])));

header('Content-Disposition: attachment; filename=' . urldecode($_GET['name']) . ';');

header('Content-Transfer-Encoding: binary');

echo base64_decode($body);

}

} else {

?>

<html>

<head>

<title>Téléchargement de fichiers</title>

<style>

<!--

* {

font-family: Verdana, arial;

font-size: 12px;

background: #ECE9D8;

-->

</style>

</head>



<?php

echo urldecode($_GET['name']), '
[?action=o&key='$key, '&view=', $view, '&name=', $_GET['name'], '" target="_blank">Ouvrir]

[?action=e&key='$key, '&view=', $view, '&name=', $_GET['name'], '">Enregistrer]';

?>



</html>

<?php } ?>



<hr style="width: 100%; height: 2px;">Si ma reponse te convient, merci de l'accepter !
0
Tikate Messages postés 7 Date d'inscription samedi 24 mai 2003 Statut Membre Dernière intervention 2 août 2005
26 avril 2005 à 09:23
Je te remercie énormement pour ton code et désolée pour le retard de ma réponse, je viens de le consulter. Je ne l'ai pas encore essayé mais dès que je le pourrais "j'accepterais" si tout va bien.

Merci encore!
0
Tikate Messages postés 7 Date d'inscription samedi 24 mai 2003 Statut Membre Dernière intervention 2 août 2005
29 avril 2005 à 17:35
Bonjour,

je reviens te faire part des résultats de l'application de ton code.

1. quand tu fais appel à window.open : les paramètres entre parenthèses sont séparés par des points au lieu de virgules.

2. Je ne sais pas pour toi mais moi il fallu que je compare $part->disposition == "attachment")
à 'ATTACHEMENT'
c'est à dire en majuscule.

3. qlq chose que je n'ai pas pu résoudre. Ca fonctionne pour "enregistrer" mais pas pour "ouvrir", ça ne charge pas la bonne appli et du coup le fichier n'est pas lu correctement, que ce soit du texte ou de l'image.

voilà. Je te remercie tt de même et bon week end.
0
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
29 avril 2005 à 18:19
Hello,

Erreurs toutes bêtes eacte pour le ; j'avais collé depuis un style="".
Et exacte pour les majuscules, mal recopier. Et bissar pour la lecture
... En tt ca ca fonctionne avec les images.

<hr style="width: 100%; height: 2px;"> Si ma reponse te convient, merci de l'accepter !
0
Rejoignez-nous