web-dev-qa-db-fra.com

Comment enregistrer par programme une image à partir d'une URL?

Comment enregistrer par programme une image à partir d'une URL? J'utilise C # et je dois pouvoir récupérer des images à partir d'une URL et les stocker localement. ... et non, je ne vole pas :)

53
user132291

Il serait plus facile d'écrire quelque chose comme ceci:

WebClient webClient = new WebClient();
webClient.DownloadFile(remoteFileUrl, localFileName);
112
Alex

Vous avez juste besoin de faire une requête http de base en utilisant HttpWebRequest pour l'URI de l'image, puis récupérez le flux d'octets résultant, puis enregistrez ce flux dans un fichier.

Voici un exemple sur la façon de procéder ...

'En remarque, si l'image est très grande, vous voudrez peut-être diviser br.ReadBytes (500000) en une boucle et saisir n octets à la fois en écrivant chaque lot d'octets pendant que vous les récupérez. "

using System;
using System.IO;
using System.Net;
using System.Text;

namespace ImageDownloader
{
    class Program
    {
        static void Main(string[] args)
        {
            string imageUrl = @"http://www.somedomain.com/image.jpg";
            string saveLocation = @"C:\someImage.jpg";

            byte[] imageBytes;
            HttpWebRequest imageRequest = (HttpWebRequest)WebRequest.Create(imageUrl);
            WebResponse imageResponse = imageRequest.GetResponse();

            Stream responseStream = imageResponse.GetResponseStream();

            using (BinaryReader br = new BinaryReader(responseStream ))
            {
                imageBytes = br.ReadBytes(500000);
                br.Close();
            }
            responseStream.Close();
            imageResponse.Close();

            FileStream fs = new FileStream(saveLocation, FileMode.Create);
            BinaryWriter bw = new BinaryWriter(fs);
            try
            {
                bw.Write(imageBytes);
            }
            finally
            {
                fs.Close();
                bw.Close();
            }
        }
    }
}
30
William Edmondson

Un exemple en aspx (c #)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net;
using System.IO;

public partial class download_file_from_url : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string url = "http://4rapiddev.com/wp-includes/images/logo.jpg";
        string file_name = Server.MapPath(".") + "\\logo.jpg";

        save_file_from_url(file_name, url);

        Response.Write("The file has been saved at: " + file_name);
    }

    public void save_file_from_url(string file_name, string url)
    {
        byte[] content;
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
        WebResponse response = request.GetResponse();

        Stream stream = response.GetResponseStream();

        using (BinaryReader br = new BinaryReader(stream))
        {
            content = br.ReadBytes(500000);
            br.Close();
        }
        response.Close();

        FileStream fs = new FileStream(file_name, FileMode.Create);
        BinaryWriter bw = new BinaryWriter(fs);
        try
        {
            bw.Write(content);
        }
        finally
        {
            fs.Close();
            bw.Close();
        }
    }
}

Auteur: HOAN HUYNH
ASP.Net C # Télécharger ou enregistrer le fichier image à partir de l'URL

3
opsgreat