Man*_*a v 5 c# asp.net-core-mvc asp.net-core
如何使用文件路径获取 IFormFile 实例?在本例中,该文件是存储在文件夹中的图像wwwroot
。
我将向您提供一些我想要实现的目标的背景信息:
我想更新产品,因此为了做到这一点,我必须在视图上显示产品信息,包括它的文件名旁边的<input type="file" class="form-control-file" asp-for="File">
. 所以用户知道,它已经有一个图像,当然我在执行 HTTP Post 请求时不会有问题,因为没有选择文件(如果用户不想更新图像)。问题是产品类没有 IFormFile 属性,它只有图像名称,而视图模型负责拥有 IForm 文件。那么,在将 ProductViewModel 作为参数发送到视图之前,如何将图像名称或路径转换为 IFormFile 呢?
这是我的视图、视图模型和我的产品类别:
Update.cshtml
<form enctype="multipart/form-data" method="post" asp-controller="Product" asp-action="Update">
<div class="form-group">
<label asp-for="Name"></label>
<input type="text" class="form-control" asp-for="Name" placeholder="Cereal, Ice cream, Tuna, etc...">
<span class="text-danger" asp-validation-for="Name"></span>
</div>
<div class="form-group">
<label asp-for="File"></label>
<input type="file" class="form-control-file" asp-for="File">
</div>
<button class="btn btn-success">Save Changes</button>
</form>
Run Code Online (Sandbox Code Playgroud)
ProductViewModel.cshtml
public class ProductViewModel
{
public string Name { get; set; }
public IFormFile File { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
Product.cshtml
public class Product
{
public string Name { get; set; }
public string ImageName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
Yiy*_*You 15
下面是一个在 Action 中更改 IFormFile 路径的演示:
控制器:
public IActionResult GetFile() {
Product product = new Product { Name = "product1", ImageName = "red.PNG" };
string path = "./wwwroot/images/" + product.ImageName;
using (var stream = System.IO.File.OpenRead(path))
{
ProductViewModel productViewModel = new ProductViewModel
{
Name = product.Name,
File = new FormFile(stream, 0, stream.Length, null, Path.GetFileName(stream.Name))
};
return Ok();
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
18089 次 |
最近记录: |