我正在嘗試上傳圖片,這是視圖:
@model CrearAmigoModelo
@{
ViewBag.Title = "Nuevo amigo";
}
<form asp-controller="Home" asp-action="Create" method="post">
<div asp-validation-summary="All" class="text-danger"> </div>
<div class="form-group row">
<label asp-for="Nombre" class="col-sm-2 col-form-label"></label>
<div class="col-sm-10">
<input asp-for="Nombre" class="form-control" placeholder="Nombre" />
<span asp-validation-for="Nombre" class="text-danger"></span>
</div>
</div>
<div class="form-group row">
<label asp-for="Email" class="col-sm-2 col-form-label"></label>
<div class="col-sm-10">
<input asp-for="Email" class="form-control" placeholder="E-mail" />
<span asp-validation-for="Email" class="text-danger"></span>
</div>
</div>
<div class="form-group row">
<label asp-for="Ciudad" class="col-sm-2 col-form-label"></label>
<div class="col-sm-10">
<select asp-for="Ciudad" class="custom-select mr-sm-2" asp-items="Html.GetEnumSelectList<Provincia>()">
:
<option value="">Seleccione uno</option>
</select>
<span asp-validation-for="Ciudad" class="text-danger"></span>
</div>
</div>
<div class="form-group row">
<label asp-for="Foto" class="col-sm-2 col-form-label">-------------------------</label>
<div class="col-m-10">
<div class="custom-file">
<input type="file" asp-for="Foto" class="form-control custom-file-input"/>
<label class="custom-file-label"> Selecciona un fichero </label>
</div>
</div>
</div>
<div class="form-group row">
<div class="col-sm-10">
<button type="submit" class="btn btn-primary">Nuevo</button>
</div>
</div>
@section Scripts{
<script>
$(document).ready(function() {
$('.custom-file-input').on("change", function (){
var fileName=$(this).val().split("\\").pop();
$(this).next('.custom-file-label').html(fileName);
});
});
</script>
}
</form>
這是控制器中的方法:
[HttpPost]
public IActionResult Create(CrearAmigoModelo a)
{
if (ModelState.IsValid)
{
string guidImagen = null;
if (a.Foto != null)
{
string ficherosImagenes = Path.Combine(_env.WebRootPath, "images");
guidImagen = Guid.NewGuid().ToString() a.Foto.FileName;
string rutaDefinitiva = Path.Combine(ficherosImagenes, guidImagen);
a.Foto.CopyTo(new FileStream(rutaDefinitiva, FileMode.Create));
}
Amigo nuevoAmigo = new Amigo();
nuevoAmigo.Nombre = a.Nombre;
nuevoAmigo.Email = a.Email;
nuevoAmigo.Ciudad = a.Ciudad;
nuevoAmigo.rutaFoto = guidImagen;
//nuevoAmigo.rutaFoto = " ";
amigoAlmacen.nuevo(nuevoAmigo);
return RedirectToAction("details", new { id = nuevoAmigo.Id });
}
return View();
}
控制器在“Foto”欄位中為空,所有其他欄位都正確傳遞。在我完成所有欄位并按下按鈕發送表單時的視圖中,即使我已經選擇了檔案,也始終顯示訊息“需要照片欄位”。
uj5u.com熱心網友回復:
將包含檔案的表單需要具有編碼型別multipart/form-data.
<form enctype="multipart/form-data">
</form>
有關詳細資訊,請參考以下 Microsoft Docs:
在 ASP.Net Core 中上傳檔案
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/470994.html
標籤:C# asp.net-mvc asp.net 核心
