如何访问桌面应用程序和网站之间的图像

时间:2016-04-15 12:54:14

标签: c# asp.net url

这是一个奇怪的。我有2个项目在visual studio中使用相同的解决方案。 DesktopApplication和WebsiteApplication。

在DesktopApplication中,我有一个名为Images的文件夹。在这里,我有我想要检索的图像。

我目前有使用WebsiteApplication的代码从数据库中检索文件名并在ImageUrl中显示它。它目前正在检索文件名,但我不确定如何在图像的URL路径中设置它。

以下是我当前的代码。

private void loadRecipeImage()
        {
            SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0; AttachDbFilename=C:\Users\Donald\Documents\Visual Studio 2013\Projects\DesktopApplication\DesktopApplication\Student_CB.mdf ;Integrated Security=True");
            con.Open();
            try
            {
                //Fetching top recipe     
                SqlDataAdapter sda = new SqlDataAdapter("SELECT Image FROM Recipe_Image WHERE Recipe_ID = '"+recipeid1.Text+"'", con);
                DataTable dt = new DataTable();
                sda.Fill(dt);

                if (dt.Rows.Count > 0)
                {
                    recipeimg.ImageUrl = String.Format("//Images//{0}", dt.Rows[0][0].ToString());
                }
            }
            catch (Exception)
            {



            }

            con.Close();

        }

此当前代码根本没有显示图像。它呈现红十字。显然,这并没有找到它的位置。

1 个答案:

答案 0 :(得分:3)

第一步是将您的图片文件夹移动到两个项目都可以轻松访问的位置。我建议你把它移到例如:" C:\ SharedImagesFolder"。 (最后,这个字符串将进入你的app.config或web.config)。如果你想在某天使用文件服务器,这也会很容易。

第二步,当您将图片存储在桌面应用中时,应将其存储到数据库中

  • 标识符(可能是唯一名称,整数(简单ID)或GUID
  • 文件名(例如:myImage.jpg)
  • Guid(如果这不是您的标识符)。

第三步,您稍微修改了在文件夹中写入文件的方式。我建议你只使用GUID作为图像名称(这样,你肯定不会覆盖另一个文件)。此Guid将是存储在数据库中的Guid。

第4步您需要在控制器内部接收ID的操作,这将

public ActionResult GetFile(Guid id)
{
    var stream = new StreamReader(YOUR_FILE_PATH + "/" + id);
    return File(stream.ReadToEnd(), CONTENT_TYPE);
}