Récupérer une pièce jointe en PHP
Ce matin, Gmail, le service de mail de Google m'a fait une blague : une personne m'a envoyé un fichier zip
en pièce jointe mais renommé en .txt
, Gmail n'acceptant pas le zip
.
Cette pièce jointe était bien indiquée dans la liste des messages (via une picto représentant un trombone) mais elle n'était pas présente dans le corps du message ; seul les caractères PK
étant affichés en fin de message. Comment faire pour récupérer ma pièce jointe, ô combien importante à mes yeux et à ceux de mon expéditeur ?
Voici la marche à suivre :
- Cliquez sur le lien
Autres options
dans l'entête du message - Cliquez ensuite sur le lien
Afficher l'original
- Dans la fenêtre qui s'ouvre - le message tel que vous l'avez réellement reçu - rechercher un pavé de texte incompréhensible : il commence par une séquence du type :
--------------020701030101070201000002
et le début indique ses propriétés (vous devriez y trouver quelque chose du genreContent-Type: text/plain; name="attachment.txt" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="attachment.txt"
) - Copiez ce qui suit dans un fichier nommé
attachment.txt
- Créez le script suivant :
<?php // Fichier source content la pièce jointe codée en base64 $inputFilename = 'attachment.txt'; // Fichier de destination contenant la pièce jointe décodée $ouputFilename = 'attachment.zip'; // Lecture et traitement du contenu source $content = join('', file($inputFilename)); $content = str_replace("\n", '', $content); $content = base64_decode($content); // Ecriture du résultat $handle = fopen($ouputFilename, 'a'); fwrite($handle, $content); fclose($handle); ?>
- Exécutez-le, et voilà, vous avez récupéré votre pièce jointe !
Commentaires
Il n'y a aucun commentaire ; soyez le premier à déposer le vôtre.
Ajouter un commentaire
Il n'est plus possible de réagir à cette entrée directement mais si vous pensez que votre intervention peut être intéressante, envoyez-moi votre commentaire, je l'ajouterai ici en votre nom.