Télécharger les fichiers reçus
Télécharger et déchiffrer les fichiers joints d'un message reçu.
Prérequis
Un message lu avec succès (statut 200) : voir Lire un message. Les fichiers se trouvent dans FilesMetaData de la réponse.
Important
Utilisez une version à jour du SDK. Le nom de chaque fichier est choisi par l'expéditeur : le SDK le ramène à un simple nom de fichier dans votre dossier de réception, puis vérifie l'empreinte SHA-512 du fichier reconstitué. Les versions antérieures à ce correctif ne le faisaient pas.
Exemple
SecureFiles fichiers = response.FilesMetaData; // réponse de GetMessage, statut 200
if (fichiers?.Files != null && fichiers.Files.Count > 0)
{
var fileHelper = new FileHelper();
List<DownloadedFileWithMetaData> recus = fileHelper.PrepareFileToDownload(fichiers, dossierReception);
fileHelper.DownloadSecureFiles(fichiers, recus);
if (recus.Count != fichiers.Files.Count)
journal.LogWarning("Des fichiers n'ont pas pu être préparés");
foreach (DownloadedFileWithMetaData f in recus)
{
if (!f.Success)
journal.LogWarning("Fichier rejeté : téléchargement incomplet ou altéré");
}
}
Le résultat
Un élément par fichier :
| Champ | Contenu |
|---|---|
Success |
Le fichier est téléchargé et déchiffré. Testez-le pour chaque fichier : l'appel lui-même ne lève pas d'erreur. |
FilePath |
Chemin du fichier déchiffré. |
MimeType |
Type du fichier, tel que déclaré par l'expéditeur. |
Le SDK vérifie l'empreinte SHA-512 du fichier reconstitué : un fichier altéré est supprimé et Success vaut false. Un fichier envoyé sans empreinte est téléchargé sans ce contrôle.
Le dossier de réception
- Dossier dédié. Hors de la racine de votre site web, accessible seulement au compte de service. Créez-le vous-même avec ces droits avant le premier téléchargement : le SDK le crée s'il manque, mais avec les droits par défaut (0755 en PHP).
- Fichiers en clair. Les fichiers déchiffrés sont écrits en clair : traitez-les, puis supprimez-les, ou conservez-les chiffrés. Voir Chiffrement.
- Fichiers temporaires. Le SDK écrit des morceaux chiffrés dans le même dossier. Ils sont supprimés après la reconstitution, mais conservés en cas d'échec : nettoyez le dossier régulièrement.
- Même nom. Si un fichier identique existe déjà, il est conservé sans nouveau téléchargement. S'il est différent, le nouveau fichier reçoit un nom préfixé d'un identifiant.
- Journaux. N'y écrivez pas le nom des fichiers : il peut contenir des renseignements personnels.
Le SDK ne propose pas de téléchargement en mémoire : les fichiers passent toujours par le disque.
En préproduction, le SDK .NET télécharge depuis l'adresse de SettingsHelper.CustomFileHandler : réglez-la comme indiqué dans Identifiants et environnements.
Erreurs fréquentes
| Symptôme | Cause probable | Solution |
|---|---|---|
.NET : NullReferenceException dans DownloadSecureFiles |
Le message n'a pas de fichiers (FilesMetaData vaut null) |
Testez-le avant l'appel, comme dans l'exemple. |
Python : AttributeError / PHP : TypeError |
secure_files ou secureFiles vaut None (null) |
Même solution. |
Success vaut false |
Échec réseau, dossier non accessible en écriture, ou fichier altéré | Vérifiez les droits du dossier, puis relancez le téléchargement. |
| .NET : fichier introuvable en préproduction | Adresse de téléchargement de production utilisée | Réglez SettingsHelper.CustomFileHandler. |
| Le fichier porte un nom préfixé d'un identifiant | Un autre fichier du même nom existait déjà | Normal : le fichier existant n'est pas remplacé. |