Est-il possible de télécharger une image directement à partir d'une URL en c # si l'URL n'a pas de format d'image à la fin du lien? Exemple d'URL:
https://fbcdn-sphotos-h-a.akamaihd.net/hphotos-ak-xpf1/v/t34.0-12/10555140_10201501435212873_1318258071_n.jpg?oh=97ebc03895b7acee9aebbde7d6b002bf&oe=53C9ABB0&__gda__=1405685729_110e04e71d969d392b63b27ec4f4b24a
Je sais comment télécharger l'image lorsque l'URL se termine par un format d'image. Par exemple:
http://img1.wikia.nocookie.net/__cb20101219155130/uncyclopedia/images/7/70/Facebooklogin.png
Simplement Vous pouvez utiliser les méthodes suivantes.
using (WebClient client = new WebClient())
{
client.DownloadFile(new Uri(url), @"c:\temp\image35.png");
//OR
client.DownloadFileAsync(new Uri(url), @"c:\temp\image35.png");
}
Ces méthodes sont presque les mêmes que DownloadString (..) et DownloadStringAsync (...). Ils stockent le fichier dans Directory plutôt que dans la chaîne C # et ne nécessitent pas d'extension de format dans URi
public void SaveImage(string filename, ImageFormat format) {
WebClient client = new WebClient();
Stream stream = client.OpenRead(imageUrl);
Bitmap bitmap; bitmap = new Bitmap(stream);
if (bitmap != null)
bitmap.Save(filename, format);
stream.Flush();
stream.Close();
client.Dispose();
}
try{
SaveImage("--- Any Image Path ---", ImageFormat.Png)
}catch(ExternalException)
{
//Something is wrong with Format -- Maybe required Format is not
// applicable here
}
catch(ArgumentNullException)
{
//Something wrong with Stream
}
Selon que vous connaissiez ou non le format d'image, voici comment vous pouvez le faire:
using (WebClient webClient = new WebClient())
{
webClient.DownloadFile("http://yoururl.com/image.png", "image.png") ;
}
Vous pouvez utiliser Image.FromStream
pour charger tout type de bitmaps habituels (jpg, png, bmp, gif, ...), il détectera automatiquement le type de fichier et vous n’aurez même pas besoin de vérifier n'est pas une très bonne pratique). Par exemple:
using (WebClient webClient = new WebClient())
{
byte [] data = webClient.DownloadData("https://fbcdn-sphotos-h-a.akamaihd.net/hphotos-ak-xpf1/v/t34.0-12/10555140_10201501435212873_1318258071_n.jpg?oh=97ebc03895b7acee9aebbde7d6b002bf&oe=53C9ABB0&__gda__=1405685729_110e04e71d9");
using (MemoryStream mem = new MemoryStream(data))
{
using (var yourImage = Image.FromStream(mem))
{
// If you want it as Png
yourImage.Save("path_to_your_file.png", ImageFormat.Png) ;
// If you want it as Jpeg
yourImage.Save("path_to_your_file.jpg", ImageFormat.Jpeg) ;
}
}
}
Remarque: ArgumentException peut être levé par Image.FromStream
si le contenu téléchargé n'est pas un type d'image connu.
Cochez cette référence sur MSDN pour trouver tous les formats disponibles. Voici la référence à WebClient
et Bitmap
.
.net Framework permet au contrôle PictureBox de charger des images à partir de l'URL
et enregistrer une image dans l'événement de chargement terminé
protected void LoadImage() {
pictureBox1.ImageLocation = "PROXY_URL;}
void pictureBox1_LoadCompleted(object sender, AsyncCompletedEventArgs e) {
pictureBox1.Image.Save(destination); }
Pour ceux qui souhaitent télécharger une image SANS l'enregistrer dans un fichier:
Image DownloadImage(string fromUrl)
{
using (System.Net.WebClient webClient = new System.Net.WebClient())
{
using (Stream stream = webClient.OpenRead(fromUrl))
{
return Image.FromStream(stream);
}
}
}
Essayez ça fonctionnera à 100%
Écrivez ceci dans votre fichier de contrôleur
public class TenantCustomizationController : RecruitControllerBase
//enter code here
[AllowAnonymous]
[HttpGet]
public async Task<FileStreamResult> GetLogoImage(string logoimage)
{
string str = "" ;
var filePath = Server.MapPath("~/App_Data/" + AbpSession.TenantId.Value);
// DirectoryInfo dir = new DirectoryInfo(filePath);
string[] filePaths = Directory.GetFiles(@filePath, "*.*");
foreach (var fileTemp in filePaths)
{
str= fileTemp.ToString();
}
return File(new MemoryStream(System.IO.File.ReadAllBytes(str)), System.Web.MimeMapping.GetMimeMapping(str), Path.GetFileName(str));
}
//09/07/2018
Here Is my View
<div><a href="/TenantCustomization/GetLogoImage?Type=Logo" target="_blank">@L("DownloadBrowseLogo")</a></div>