这很奇怪。我有 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();
}
当前代码根本不显示图像。它显示一个红色十字。显然,这不是为它寻找位置。
最佳答案
第一步是将您的图像文件夹移动到您的两个项目都可以轻松访问的位置。我建议您将其移动到例如:“C:\SharedImagesFolder”。 (最后,这个字符串将进入您的 app.config 或 web.config)。如果有一天你想使用文件服务器,这也会让事情变得简单。
第二步,当您将图像存储在桌面应用程序中时,您应该存储到您的数据库中
- 标识符(可以是唯一名称、整数(简单 ID)或 GUID
- 文件名(例如:myImage.jpg)
- Guid(如果这不是您的标识符)。
第三步,您稍微修改在文件夹中写入文件的方式。我建议您只使用 GUID 作为图像名称(这样,您肯定不会覆盖另一个文件)。此 Guid 将存储在您的数据库中。
第 4 步您需要在 Controller 内执行一个操作,该操作将接收一个 Id,这将
public ActionResult GetFile(Guid id)
{
var stream = new StreamReader(YOUR_FILE_PATH + "/" + id);
return File(stream.ReadToEnd(), CONTENT_TYPE);
}
关于c# - 如何在桌面应用程序和网站之间访问图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36647732/