using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;
using System.Drawing;
using System.IO;
namespace BurgerShop.Models
{
public class FoodDbInitializer : DropCreateDatabaseAlways<FoodContext>
{
public byte[] ImageToByteArray(Image image)
{
MemoryStream ms = new MemoryStream();
image.Save(ms, image.RawFormat);
return ms.ToArray();
}
protected override void Seed(FoodContext context)
{
Burger hamburger = new Burger
{
Id = 1,
Name = "Гамбургер",
Price = 49,
Image = ImageToByteArray(Image.FromFile("BurgerShop\\Content\\img\\Burgers\\1.jpg"))
};
base.Seed(context);
}
}
}
当我尝试从文件中读取图像时,我FileNotFoundException
。我在文件路径中有这个图像,所以奇怪的是编译器找不到文件。请帮帮我!
答案 0 :(得分:0)
尝试将地址更改为完整地址而不是相对地址。
Image.FromFile("C:\\..\\BurgerShop\\Content\\img\\Burgers\\1.jpg")
还要考虑使用
查找完整路径fullPath = Path.GetFullPath("\\BurgerShop\\Content\\img\\Burgers\\1.jpg");
var image= Image.FromFile(fullpath);
答案 1 :(得分:0)
因为您似乎使用相对路径,我建议您从* .exe所在的文件夹中找到。
因此,如果您正在运行调试会话,那么exe将位于..bin \ Debug \中,那么这可能会起作用:
Image = ImageToByteArray(Image.FromFile(@"..\..\Content\img\Burgers\1.jpg"))
如果您在其他地方有可执行文件,则应将Content文件夹复制到与程序的* .exe相同的文件夹中。并确保您的* .jpg文件也在那里。 (检查它是* .jpeg还是* .jpg也会有帮助)
然后你可以使用相对路径:
Image = ImageToByteArray(Image.FromFile(@"Content\img\Burgers\1.jpg"))
答案 2 :(得分:0)
Burger hamburger = new Burger
{
Id = 1,
Name = "Гамбургер",
Price = 49,
Image = File.ReadAllBytes(Path.GetFullPath(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Content\\img\\Burgers\\1.jpg")))
};
我已经找到答案并且它有效,谢谢大家,谁参与了我的问题)