我已将ContentRootPath
更改为c:\images
,如下所示。
public class Program
{
// others are removed for simplicity.
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseContentRoot(@"c:\images")
.UseStartup<Startup>();
}
c:\images
中只有JPEG照片。
使用DI,我可以通过ContentRootPath
访问_env
,如下所示。
public class HomeController : Controller
{
[HttpGet]
public IActionResult Index()
{
string crp = _env.ContentRootPath;
object[] filepaths = Directory.GetFiles(crp)
.Select(x=>Path.GetFileName(x))
.ToArray<string>();
return View(filepaths);
}
[HttpGet]
public FileStreamResult ViewImage(string filename)
{
string filepath = Path.Combine(_env.ContentRootPath, filename);
byte[] data = System.IO.File.ReadAllBytes(filepath);
Stream stream = new MemoryStream(data);
return new FileStreamResult(stream, "image/jpeg");
}
}
@model IList<object>
@foreach (var item in Model)
{
<img src="/Home/ViewImage/@item" />
}
filename
始终为null
。有什么问题以及如何解决?
答案 0 :(得分:1)
由于您使用(大概)默认路由,因此您的上一个路由参数为id
并且是可选的。
要使get
正常工作,您可以将图像源更改为具有命名参数的路线:
<img src="/Home/ViewImage?filename=@item" />