我有一个程序显示可下载的应用程序列表,其中包含一个图标列。它从MySQL数据库获取数据,但它将图像作为链接。
有没有办法显示该图像而无需将其下载到客户端计算机?如果有,有人可以告诉我怎么样?如果没有人可以告诉我如何检查该行的图像是否已下载,如果是,则显示该行,如果不是,则从URL下载并且显示它?
请提供一些详细信息或链接到详细信息的网站,因为这是我第一次做这样的事情,而且我只在3周前开始用C#。
答案 0 :(得分:0)
尽管你的问题看起来很广泛,你可以通过使用自己喜欢的搜索引擎网站找到答案。以下是答案以及最后的小样本申请。
这是承诺的小样本应用程序,可以帮助您入门。
namespace WindowsFormsApplication
{
using System;
using System.Data;
using System.Drawing;
using System.IO;
using System.Net;
using System.Windows.Forms;
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
dataGridView1.DataSource = GetDataTable();
}
private DataTable GetDataTable()
{
DataTable dataTable = new DataTable();
dataTable.Columns.Add("Image", typeof(Image));
// Path to store locally the image
string imageLocalPath = AppDomain.CurrentDomain.BaseDirectory + "image.ico";
if (File.Exists(imageLocalPath))
{
dataTable.Rows.Add(new object[] { Image.FromFile(imageLocalPath) });
}
else
{
// Get request to download the image if it does not exist locally
var request = WebRequest.Create("http://cdn.sstatic.net/Sites/stackoverflow/img/favicon.ico?v=4f32ecc8f43d");
using (var response = request.GetResponse())
using (var stream = response.GetResponseStream())
{
// Check if the request is successful
if ((response as System.Net.HttpWebResponse).StatusCode == HttpStatusCode.OK)
{
var image = Bitmap.FromStream(stream);
image.Save(imageLocalPath);
dataTable.Rows.Add(new object[] { image });
}
// No local image exist and the URL is no longer valid
else
{
// The default Windows Forms image will be displayed
}
}
}
return dataTable;
}
}
}