T�l�charger l'archive sur l'application Web ASP.NET

Sc�nario

Cet article vous fournit un exemple d’utilisation des biblioth�ques Aspose pour la d�compression d’archives et le traitement d’images pour l’application Web ASP.NET. Le cas d’utilisation�: le visiteur du site t�l�charge une archive zip contenant des images sur une application Web pour les faire pivoter selon un angle sp�cifique. Les images pivot�es seront affich�es sur la m�me page Web en r�ponse.

Pr�parer l’application Web ASP.NET

� l�aide de Visual Studio, composez une application Web ASP.NET Core simple avec Razor Pages. � l’aide de NuGet Package Manager, r�f�rez-vous � deux packages pour votre projet�: Aspose.Zip pour la d�compression et Aspose.Imaging pour le traitement d’image.
Recherchez la page � Index.cshtml � dans votre Explorateur de solutions. Maintenant, ajoutez un formulaire � cette page avec l’attribut enctype="multipart/form-data" dans la balise <form>. Il fallait transf�rer le fichier vers le serveur Web. Ensuite, ajoutez deux champs de saisie - un de type � fichier � pour l’archive t�l�charg�e, un autre de type � num�ro � pour sp�cifier l’angle de rotation. Voici le balisage HTML complet du formulaire�:

1<form method="post" enctype="multipart/form-data">
2    <span>Images archive: </span><input type="file" name="uploadedFile" required="required" />
3    <br />
4    <span>Rotation angle: </span><input type="number" value="30" min="0" max="360" name="rotateDegree" required="required" />
5    <br />
6    <input type="submit" value="Upload" />
7</form>

Certains attributs de validation ont �galement �t� ajout�s.

Traitement des demandes des utilisateurs

Ainsi, l’utilisateur fournit des images � l’archive zip et soumet le formulaire. 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. Dans cette m�thode, nous extrayons l’archive zip en utilisant le constructeur appropri�, puis faisons pivoter chaque image. Voici le brouillon de la m�thode :

1public void OnPost (IFormFile uploadedFile, int rotateDegree) {
2    using (Archive archive = new Archive(uploadedFile.OpenReadStream())) {
3        foreach (entre ArchiveEntry dans archive.Entries) {
4		   // Extrait l'image et la fait pivoter.
5		}
6    }
7}

Faire pivoter les images

Nous utilisons la biblioth�que Aspose.Imaging pour faire pivoter une image selon un angle particulier sur l’angle de vol en suivant cette instruction. L’extrait du code de rotation�:

 1    using (MemoryStream rotated = new MemoryStream())
 2    {
 3        using (RasterImage image = (RasterImage)Image.Load(extracted))
 4        {
 5            // Before rotation, the image should be cached for better performance
 6            if (!image.IsCached)
 7                image.CacheData();
 8                    
 9            image.Rotate(rotateDegree, true, Color.CornflowerBlue);
10            image.Save(rotated);
11        }                          
12    }

Mod�le de page et rendu d’image

Nous devons stocker des octets d’images trait�es dans le mod�le de page pour restituer ces images. Ajoutez la propri�t� public List<byte[]> ImageBytes { get; ensemble priv�; }IndexModel. Nous remplissons cette liste avec les octets d’image trait�s. Pour les afficher sur la page Web, nous utilisons data URI Nous devons convertir les octets de l’image en cha�ne base64. Voici un code Razor de rendu sur Index.cshtml

1@{
2if (Model.ImageBytes != null && Model.ImageBytes.Count > 0) {
3        <h4>Images pivotes:</h4>
4        foreach (image octet[] dans Model.ImageBytes) {
5            <img src="data:image;base64,@Convert.ToBase64String(image)" width="150"/>
6        }
7    }
8}

R�ponse finale

Alors, mettez tout cela ensemble. Chaque entr�e de l’archive a �t� d�compress�e, puis une image compos�e � partir de ces octets, et enfin pivot�e.
Nous ne validons pas le fichier utilisateur dans cet exemple. Dans les applications r�elles, vous devez v�rifier une archive t�l�charg�e et son contenu.
Vous trouverez ci-dessous la m�thode finale OnPost.

 1    public void OnPost(IFormFile uploadedFile, int rotateDegree)
 2    {
 3        ImageBytes = new List<byte[]>();
 4
 5        using (Archive archive = new Archive(uploadedFile.OpenReadStream()))
 6        {
 7            foreach (ArchiveEntry entry in archive.Entries)
 8            {
 9                if (entry.IsDirectory)
10                    continue;
11
12                using (MemoryStream extracted = new MemoryStream())
13                {
14                    entry.Open().CopyTo(extracted);
15                    extracted.Seek(0, SeekOrigin.Begin);
16                    using (MemoryStream rotated = new MemoryStream())
17                    {
18                        using (RasterImage image = (RasterImage)Image.Load(extracted))
19                        {
20                            if (!image.IsCached)  // Before rotation, the image should be cached for better performance
21                                image.CacheData();
22
23                            image.Rotate(rotateDegree, true, Color.CornflowerBlue);
24                            image.Save(rotated);
25                        }
26                        
27                        this.ImageBytes.Add(rotated.ToArray());
28                    }
29                }
30            }
31        }
32    }

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.