Table of Contents

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é.

Et ensuite