Télécharger l'image sur le site .NET/C#
Je suis en train de télécharger des images à partir du site. Le code que j'utilise fonctionne bien alors que l'image est disponible. Si l'image est-elle pas disponible, il est créé un problème. Comment valider la disponibilité de l'image?
Code:
Méthode 1:
WebRequest requestPic = WebRequest.Create(imageUrl);
WebResponse responsePic = requestPic.GetResponse();
Image webImage = Image.FromStream(responsePic.GetResponseStream()); //Error
webImage.Save("D:\\Images\\Book\\" + fileName + ".jpg");
Méthode 2:
WebClient client = new WebClient();
Stream stream = client.OpenRead(imageUrl);
bitmap = new Bitmap(stream); //Error : Parameter is not valid.
stream.Flush();
stream.Close();
client.dispose();
if (bitmap != null)
{
bitmap.Save("D:\\Images\\" + fileName + ".jpg");
}
Edit:
Flux a les instructions suivantes:
Length '((System.Net.ConnectStream)(str)).Length' threw an exception of type 'System.NotSupportedException' long {System.NotSupportedException}
Position '((System.Net.ConnectStream)(str)).Position' threw an exception of type 'System.NotSupportedException' long {System.NotSupportedException}
ReadTimeout 300000 int
WriteTimeout 300000 int
- Enveloppez-la fausse déclaration avec
try - catch
, et de nous fournir les détails de l'exception. - la ligne bitmap = new Bitmap(stream); affiche l'erreur: Paramètre n'est pas valide.
Vous devez vous connecter pour publier un commentaire.
Il n'y a pas de nécessité d'impliquer toutes les classes d'image, vous pouvez simplement appeler
WebClient.DownloadFile
:Mise à jour
Puisque vous voulez vérifier si le fichier existe et télécharger le fichier si c'est le cas, il est préférable de le faire dans la même demande. Voici donc une méthode qui permettra de le faire:
En bref, il fait une demande pour le fichier, vérifie que le code de réponse est l'un des
OK
,Moved
ouRedirect
et aussi que leContentType
est une image. Si ces conditions sont remplies, le fichier est téléchargé.WebClient
.J'ai utilisé Fredrik code ci-dessus dans un projet avec quelques légères modifications, j'ai pensé partager:
Principaux changements sont les suivants:
Également possible d'utiliser la méthode DownloadData
La meilleure pratique pour télécharger une image à partir du Serveur ou du Site web et de les stocker localement.