Я пытаюсь сохранить файлы в локальном каталоге в моем ASp. NET Базовом приложении, хотя есть и другие, более эффективные способы сделать это, это способ, который запрашивает пользователь. Итак, я настроил загрузку моего файла в моем контроллере следующим образом:
HomeController.cs
[HttpPost]
public IActionResult Create(CreateProductViewModel model)
{
if (ModelState.IsValid && model !=null)
{
try
{
//Save the Product
var product = new Products
{
Id = model.Products.Id,
Title = model.Products.Title,
};
//Insert the product and get the newly created Id
_productsService.InsertProduct(product);
int newId = product.Id;
//Process the Images
if (model.Products.ProductImages != null)
{
try
{
var root = _env.WebRootPath;
var images = model.Products.ProductImages;
var path = Path.Combine(root, "images", "products", newId.ToString());
foreach (var item in images)
{
using (var stream = System.IO.File.Create(path))
{
Stream inStream = item.OpenReadStream();
using Image image = Image.Load(inStream);
int width = 350;
int height = 0;
var clone = image.Clone(i => i.Resize(width, height));
clone.SaveAsJpeg(stream);
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
catch (Exception ex) {
Console.WriteLine(ex.Message);
};
}
return RedirectToAction("Index", "Products");
}
Вот модель, которая представляет эти данные
using Microsoft.AspNetCore.Http;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations.Schema;
namespace MyProject.Data
{
public class Products : BaseEntity
{
public string Title { get; set; }
[NotMapped]
public IFormFileCollection ProductImages { get; set; }
}
}
Происходит несколько вещей, процесс должен быть следующим:
- Продукт создан
- Захвачен новый идентификатор продукта
- Путь к изображению создается с использованием нового идентификатора продукта
- Все изображения перебираются, обрабатываются и сохраняются в этом новом каталоге.
, т.е.
wwwroot/images/products/54/imagefile01.jpg
wwwroot/images/products/54/imagefile02.jpg
wwwroot/images/products/54/imagefile03.jpg
Однако это не совсем так. Изображения не сохраняются, приложение создает пустой файл (0 байт) с идентификатором продукта в качестве имени:
wwwroot/images/products/54
Что я делать неправильно, что он не создал идентификатор продукта правильно, и почему он не сохраняет мои файлы в этот каталог? Я чувствую, что пропустил шаг.