T�l�charger l'archive � partir de l'application Web ASP.NET

T�l�charger l’archive depuis le serveur

Il s’agit d’une fonctionnalit� courante pour les applications Web permettant de t�l�charger un fichier � partir de votre serveur Web. Pour r�duire la taille des donn�es transf�r�es par c�ble, vous souhaiterez peut-�tre compresser le fichier. Il est pratique pour un utilisateur de choisir le format de l’archive � t�l�charger. Cet exemple vous donne quelques informations sur la fa�on de le g�rer.

Pr�parer l’application Web ASP.NET

� l�aide de Visual Studio, composez l�application Web ASP.NET Core. Que ce soit une simple application Web avec Razor Pages. � l’aide de NuGet Package Manager, vous incluez deux packages pour votre projet�: Aspose.Zip pour la compression et Aspose.BarCode pour la g�n�ration d’exemples de donn�es.
Recherchez la page Index.cshtml dans votre Explorateur de solutions. Maintenant, ajoutez un formulaire � cette page avec un bouton de soumission � l’int�rieur. Il fallait lancer la demande de t�l�chargement par l�utilisateur.
Ajoutez � cette page le balisage HTML suivant�:

1<form method="post">    
2    <input type="submit" value="Download" />
3</form>

Liste des formats d’archives

Pour cet exemple, nous avons choisi trois des formats d’archive pris en charge par Aspose.ZIP�: ZIP, Bzip2, 7z. Composez une �num�ration pour les formats marquant ses membres avec DisplayAttribute
Le code d’�num�ration sera�:

 1  numration publique ArchiveFormat
 2  {
 3      [Affichage(Nom = "ZIP")]
 4      Fermeture clair,
 5
 6      [Display(Name = "Bzip2")]
 7      Bz2,
 8
 9      [Display(Name = "7z")]
10      SevenZip
11  }

Ensuite, vous devez cr�er une liste d�roulante dans le formulaire Web. C’est assez simple avec l’assistant HTML GetEnumSelectList - pas besoin de g�n�rer des �l�ments avec une boucle. Ins�rez simplement l’extrait suivant dans votre formulaire sur Index.cshtml�:

1<select name="archiveFormat" asp-items="Html.GetEnumSelectList<ArchiveFormat>()"></select>

Ex�cutez l�application et consultez la page d�index. Vous verrez quelque chose comme �a�:

Traitement des demandes des utilisateurs

Ainsi, l’utilisateur sp�cifie le format d’archive souhait� et clique sur “T�l�charger”. Comment g�rer sa requ�te c�t� serveur ? En utilisant l’approche ASP.NET, nous devons composer une m�thode OnPost appropri�e pour la source Index.cshtml.cs. Voici le brouillon de la m�thode :

 1 
 2
 3  public FileStreamResult OnPost ([FromForm] ArchiveFormat archiveFormat)
 4  {
 5    changer (archiveFormat)
 6    {
 7      cas ArchiveFormat.Zip:
 8        ...
 9        renvoie un nouveau FileStreamResult(result, "application/zip") {FileDownloadName = "barcode.zip"};
10      cas ArchiveFormat.Bzip2:
11        ...
12        renvoie un nouveau FileStreamResult(result, "application/x-bzip2") {FileDownloadName = "barcode.bmp.bz2"};
13      cas ArchiveFormat.SevenZip:
14        ...
15        renvoie un nouveau FileStreamResult(result, "application/x-7z-compressed") {FileDownloadName = "barcode.7z"};                           
16    }
17  }

Ainsi, pour le type d’archive demand�, nous devons pr�parer l’archive correspondante � partir d’exemples de donn�es (variable result) et r�pondre avec Microsoft.AspNetCore.Mvc.FileStreamResult ayant le type MIME appropri�.

G�n�ration d’exemples de donn�es

Nous utilisons la biblioth�que Aspose.BarCode pour g�n�rer une image BMP du code-barres � l’aide de cette instruction. L’extrait de g�n�ration du flux de donn�es�:

 1  flux priv GenerateBarcode()
 2  {
 3    var gnrateur = new Aspose.BarCode.Generation.BarcodeGenerator(
 4        Aspose.BarCode.Generation.EncodeTypes.Pdf417, "Ceci est un texte de code de test. \n Deuxi�me ligne \n troisi�me ligne.");
 5              
 6    generator.Parameters.Barcode.XDimension.Millimeters = 0.6f;
 7    generator.Parameters.Barcode.BarHeight.Millimeters = 1.2f;
 8
 9    MemoryStream result = new MemoryStream();
10    generator.Save(result, Aspose.BarCode.Generation.BarCodeImageFormat.Bmp);
11    result.Seek(0, SeekOrigin.Begin);
12    return result;
13  }

R�ponse finale

Nous avons maintenant un flux de donn�es brutes provenant de la m�thode GenerateBarcode. Compressez-le de mani�re appropri�e dans tous les cas. Vous trouverez ci-dessous la m�thode finale � OnPost �.

 1public FileStreamResult OnPost ([FromForm] ArchiveFormat archiveFormat)
 2  {
 3      en utilisant (var barcode = this.GenerateBarcode())
 4      {
 5          var rsultat = nouveau MemoryStream();
 6          changer (archiveFormat)
 7          {
 8              cas ArchiveFormat.Zip:
 9                  en utilisant (Archiver a = new Archive())
10                  {
11                      a.CreateEntry("barcode.bmp", code-barres);
12                      a.Enregistrer (rsultat);
13                  }
14                  
15                  result.Seek(0, SeekOrigin.Begin);
16                  return new FileStreamResult(result, "application/zip") {FileDownloadName = "barcode.zip"};
17              case ArchiveFormat.Bzip2:
18                  using (Bzip2Archive a = new Bzip2Archive())
19                  {
20                      a.SetSource(barcode);
21                      a.Save(result);
22                  }
23
24                  result.Seek(0, SeekOrigin.Begin);
25                  return new FileStreamResult(result, "application/x-bzip2") {FileDownloadName = "barcode.bmp.bz2"};
26              case ArchiveFormat.SevenZip:
27                  using (SevenZipArchive a = new SevenZipArchive())
28                  {
29                      a.CreateEntry("barcode.bmp", barcode);
30                      a.Save(result);
31                  }
32
33                  result.Seek(0, SeekOrigin.Begin);
34                  return new FileStreamResult(result, "application/x-7z-compressed") {FileDownloadName = "barcode.7z"};
35              default:
36                  throw new ArgumentOutOfRangeException(nameof(archiveFormat));
37          }
38      }
39  }

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.