这是一个奇怪的。我有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();
}
此当前代码根本没有显示图像。它呈现红十字。显然,这并没有找到它的位置。
答案 0 :(得分:3)
第一步是将您的图片文件夹移动到两个项目都可以轻松访问的位置。我建议你把它移到例如:" C:\ SharedImagesFolder"。 (最后,这个字符串将进入你的app.config或web.config)。如果你想在某天使用文件服务器,这也会很容易。
第二步,当您将图片存储在桌面应用中时,应将其存储到数据库中
第三步,您稍微修改了在文件夹中写入文件的方式。我建议你只使用GUID作为图像名称(这样,你肯定不会覆盖另一个文件)。此Guid将是存储在数据库中的Guid。
第4步您需要在控制器内部接收ID的操作,这将
public ActionResult GetFile(Guid id)
{
var stream = new StreamReader(YOUR_FILE_PATH + "/" + id);
return File(stream.ReadToEnd(), CONTENT_TYPE);
}