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 �num�ration 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 g�n�rateur = 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 r�sultat = 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 (r�sultat)�;
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 }