ASP.NET核心图像文件验证错误如何验证ImageFile?

如何解决ASP.NET核心图像文件验证错误如何验证ImageFile?

我有ASP.NET核心剃须刀页面,用于向人们介绍SQL数据库。在将新的byte []图像文件合并到de SQL数据库之前,一切工作正常。从那以后,网页在ModelState.IsValid处中断。 我有一个核心的Razor页面,但是当我将一个Imagefile字段添加到sql数据库时,验证中断。在添加FotoT字段之前,一切正常。我如何做才能像其他领域一样验证这个领域?这是我的代码:

@page
@model HojaFiliacion.Pages.ListaPacientes.CrearModel
@{
    ViewData["Title"] = "Crear";
}

<br />
<h2 class="text-info">Crear Nuevo Paciente</h2>

<div class="border">
    <form method="post">
        <div asp-validation-summary="ModelOnly" class="text-danger">
        </div>
        <div class="container" style="padding:25px;">
            <div class="from-group">
                <div class="row">
                    <div class="col-sm-3">
                        <label asp-for="DatosFiliacion.Nombre"></label>
                    </div>
                    <div class="col-sm-6">
                        <input asp-for="DatosFiliacion.Nombre" oninput="this.value = this.value.toUpperCase()" class="form-control" />
                    </div>
                    <span asp-validation-for="DatosFiliacion.Nombre" class="text-danger"></span>
                </div>

            </div>

            <div class="from-group">
                <div class="row">
                    <div class="col-sm-3">
                        <label asp-for="DatosFiliacion.Apellido1"></label>
                    </div>
                    <div class="col-sm-6">
                        <input asp-for="DatosFiliacion.Apellido1" oninput="this.value = this.value.toUpperCase()" class="form-control" />
                    </div>
                    <span asp-validation-for="DatosFiliacion.Apellido1" class="text-danger"></span>
                </div>

            </div>

            <div class="from-group">
                <div class="row">
                    <div class="col-sm-3">
                        <label asp-for="DatosFiliacion.Apellido2"></label>
                    </div>
                    <div class="col-sm-6">
                        <input asp-for="DatosFiliacion.Apellido2" oninput="this.value = this.value.toUpperCase()" class="form-control" />
                    </div>
                    <span asp-validation-for="DatosFiliacion.Apellido2" class="text-danger"></span>
                </div>

            </div>

            <div class="from-group">
                <div class="row">
                    <div class="col-sm-3">
                        <label asp-for="DatosFiliacion.fNacimiento"></label>
                    </div>
                    <div class="col-sm-6">
                        <input asp-for="DatosFiliacion.fNacimiento" type="date" style="width: 200px;" value="@DateTime.Today" class="form-control" />

                    </div>
                    <span asp-validation-for="DatosFiliacion.fNacimiento" class="text-danger"></span>
                </div>

            </div>

            <div class="from-group">
                <div class="row">
                    <div class="col-sm-3">
                        <label asp-for="DatosFiliacion.Nif"></label>
                    </div>
                    <div class="col-sm-6">
                        <input asp-for="DatosFiliacion.Nif" class="form-control" />
                    </div>
                    <span asp-validation-for="DatosFiliacion.Nif" class="text-danger"></span>
                </div>

            </div>
            <div class="from-group">
                <div class="row">
                    <div class="col-sm-3">
                        <label asp-for="DatosFiliacion.sexo"></label>
                    </div>
                    <div class="col-sm-6">
                        <select asp-for="DatosFiliacion.sexo" class="form-control">
                            <option value="F">Femenino</option>
                            <option value="M">Masculino</option>
                        </select>
                    </div>

                </div>
            </div>

            <div class="from-group">
                <div class="row">
                    <div class="col-sm-3">
                        <label asp-for="DatosFiliacion.idEstado"></label>
                    </div>
                    <div class="col-sm-6">
                        <select asp-for="DatosFiliacion.idEstado" class="form-control">
                            <option value="1">Soltero/a</option>
                            <option value="2">Casado/a</option>
                            <option value="3">Divorciado/a</option>
                            <option value="4">Separado/a</option>
                            <option value="5">En pareja</option>
                            <option value="6">Viudo/a</option>
                            <option value="7">Pareja de hecho</option>
                        </select>
                    </div>

                </div>
            </div>





            <div class="from-group">
                <div class="row">
                    <div class="col-sm-3">
                        <label asp-for="DatosFiliacion.Domicilio"></label>
                    </div>
                    <div class="col-sm-6">
                        <input asp-for="DatosFiliacion.Domicilio" oninput="this.value = this.value.toUpperCase()" class="form-control" />

                    </div>
                    <span asp-validation-for="DatosFiliacion.Domicilio" class="text-danger"></span>
                </div>
            </div>

            <div class="from-group">
                <div class="row">
                    <div class="col-sm-3">
                        <label asp-for="DatosFiliacion.Poblacion"></label>
                    </div>
                    <div class="col-sm-6">
                        <input asp-for="DatosFiliacion.Poblacion" oninput="this.value = this.value.toUpperCase()" class="form-control" />

                    </div>
                    <span asp-validation-for="DatosFiliacion.Poblacion" class="text-danger"></span>
                </div>
            </div>

            <div class="from-group">
                <div class="row">
                    <div class="col-sm-3">
                        <label asp-for="DatosFiliacion.CP"></label>
                    </div>
                    <div class="col-sm-6">
                        <input asp-for="DatosFiliacion.CP" class="form-control" />

                    </div>
                    <span asp-validation-for="DatosFiliacion.CP" class="text-danger"></span>
                </div>
            </div>


            <div class="from-group">
                <div class="row">
                    <div class="col-sm-3">
                        <label asp-for="DatosFiliacion.idProvincia"></label>
                    </div>
                    <div class="col-sm-6">
                        <select asp-for="DatosFiliacion.idProvincia" class="form-control">
                            <option value='1'>Álava</option>
                            <option value='2'>A Coruña</option>
                            <option value='3'>Albacete</option>
                            <option value='4'>Alicante/Alacant</option>
                            <option value='5'>Almería</option>
                            <option value='6'>Asturias</option>
                            <option value='7'>Ávila</option>
                            <option value='8'>Badajoz</option>
                            <option value='9'>Illes Balears</option>
                            <option value='10' selected>Barcelona</option>
                            <option value='11'>Burgos</option>
                            <option value='12'>Cáceres</option>
                            <option value='13'>Cádiz</option>
                            <option value='14'>Cantabria</option>
                            <option value='15'>Castellón/Castelló</option>
                            <option value='16'>Ceuta</option>
                            <option value='17'>Ciudad Real</option>
                            <option value='18'>Córdoba</option>
                            <option value='19'>Cuenca</option>
                            <option value='20'>Girona</option>
                            <option value='21'>Granada</option>
                            <option value='22'>Guadalajara</option>
                            <option value='23'>Guipúzcoa</option>
                            <option value='24'>Huelva</option>
                            <option value='25'>Huesca</option>
                            <option value='26'>Jaén</option>
                            <option value='27'>La Rioja</option>
                            <option value='28'>Las Palmas</option>
                            <option value='29'>León</option>
                            <option value='30'>Lleida</option>
                            <option value='31'>Lugo</option>
                            <option value='32'>Madrid</option>
                            <option value='33'>Málaga</option>
                            <option value='34'>Melilla</option>
                            <option value='35'>Murcia</option>
                            <option value='36'>Navarra</option>
                            <option value='37'>Ourense</option>
                            <option value='38'>Palencia</option>
                            <option value='39'>Pontevedra</option>
                            <option value='40'>Salamanca</option>
                            <option value='41'>Santa Cruz de Tenerife</option>
                            <option value='42'>Segovia</option>
                            <option value='43'>Sevilla</option>
                            <option value='44'>Soria</option>
                            <option value='45'>Tarragona</option>
                            <option value='46'>Teruel</option>
                            <option value='47'>Toledo</option>
                            <option value='48'>Valencia/Valéncia</option>
                            <option value='49'>Valladolid</option>
                            <option value='50'>Vizcaya</option>
                            <option value='51'>Zamora</option>
                            <option value='52'>Zaragoza</option>
                        </select>
                    </div>
                    <span asp-validation-for="DatosFiliacion.idProvincia" class="text-danger"></span>
                </div>
            </div>


            <div class="from-group">
                <div class="row">
                    <div class="col-sm-3">
                        <label asp-for="DatosFiliacion.idPaisISO3166"></label>
                    </div>
                    <div class="col-sm-6">
                        <select asp-for="DatosFiliacion.idPaisISO3166" class="form-control">
                            <option value="4">Afghanistan</option>
                           ....
                            <option value="716">Zimbabwe</option>
                        </select>
                    </div>
                    <span asp-validation-for="DatosFiliacion.idPaisISO3166" class="text-danger"></span>
                </div>
            </div>


            <div class="from-group">
                <div class="row">
                    <div class="col-sm-3">
                        <label asp-for="DatosFiliacion.eMail"></label>
                    </div>
                    <div class="col-sm-6">
                        <input asp-for="DatosFiliacion.eMail" oninput="this.value = this.value.toLowerCase()" class="form-control" />

                    </div>
                    <span asp-validation-for="DatosFiliacion.eMail" class="text-danger"></span>
                </div>
            </div>

            <div class="from-group">
                <div class="row">
                    <div class="col-sm-3">
                        <label asp-for="DatosFiliacion.TelefonoM"></label>
                    </div>
                    <div class="col-sm-6">
                        <input asp-for="DatosFiliacion.TelefonoM" class="form-control" />

                    </div>
                    <span asp-validation-for="DatosFiliacion.TelefonoM" class="text-danger"></span>
                </div>
            </div>


            <div class="from-group">
                <div class="row">
                    <div class="col-sm-3">
                        <label asp-for="DatosFiliacion.TelefonoF"></label>
                    </div>
                    <div class="col-sm-6">
                        <input asp-for="DatosFiliacion.TelefonoF" class="form-control" />

                    </div>
                    <span asp-validation-for="DatosFiliacion.TelefonoF" class="text-danger"></span>
                </div>
            </div>

        </div>

     
        
        <div class="container" style="padding:25px;">
            <div class="from-group">
                <div class="row">
                    <div class="col-sm-3">
                        <label asp-for="DatosFiliacion.LOPD"></label>
                    </div>
                    <div class="col-sm-6">
                        <input asp-for="DatosFiliacion.LOPD" type="checkbox" />
                        <label>He leído y acepto la política de protección de datos</label>
                    </div>
                    <span asp-validation-for="DatosFiliacion.LOPD" class="text-danger"></span>
                </div>
            </div>
            
        </div>

    </form>


    <form method="post" enctype="multipart/form-data">

        <div class="container" style="padding:25px;">
            <div class="from-group">
                <div class="row">
                    <div class="col-sm-3">
                        <label asp-for="DatosFiliacion.FotoT"></label>
                    </div>
                    <div class="custom-file">
                        <input asp-for="DatosFiliacion.FotoT" class="custom-file-input form-control">
                        <label class="custom-file-label">Haz click para cargar foto</label>
                    </div>
                </div>
            </div>
            <div class="from-group">
                <div class="row">
                    <div class="col-sm-3 offset-sm-3">
                        <input type="submit" value="Crear" class="btn btn-primary form-control" />
                    </div>
                    <div class="col-sm-3">
                        <a asp-page="Index" class="btn btn-success form-control">Volver</a>
                    </div>
                </div>
            </div>
        </div>


    </form>





</div>



@section Scripts {
    @{ await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}

我的CS文件:

解决方法

您应该使用IFormFile来接收表单提交的图像文件。就像您的原始帖子一样来做。定义一个单独的属性Upload来接收它,并在其上设置[Required]属性。然后在您的post方法中,将Upload转换为byte []并将其填充到FotoT。

我根据您的代码制作了一个演示,您可以参考以下代码。

型号:

public class Pacientes
{
    public int Id { get; set; }

    [Display(Name = "Foto")] 
    public byte[] FotoT { get; set; }
    public bool LOPD { get; set; }
}

Create.csthml:

<h1>Create</h1>

<div class="border">

    <form method="post" enctype="multipart/form-data">

        <div class="container" style="padding:25px;">
            <div class="from-group">
                <div class="row">
                    <div class="col-sm-3">
                        <label asp-for="DatosFiliacion.FotoT"></label>
                    </div>
                    <div class="custom-file">
                        <input asp-for="Upload" type="file" class="custom-file-input form-control">
                        <label class="custom-file-label">Haz click para cargar foto</label>
                    </div>
                </div>
            </div>
            <div class="from-group">
                <div class="row">
                    <div class="col-sm-3 offset-sm-3">
                        <input type="submit" value="Crear" class="btn btn-primary form-control" />
                    </div>
                    <div class="col-sm-3">
                        <a asp-page="Index" class="btn btn-success form-control">Volver</a>
                    </div>
                </div>
            </div>
        </div>

    </form>
</div>

Create.csthml.cs:

public class CreateModel : PageModel
{
    
    private IWebHostEnvironment _environment;

    [Required]
    [BindProperty]
    public IFormFile Upload { get; set; }

    private readonly PacientesContext _db;

    public CreateModel(PacientesContext db,IWebHostEnvironment environment)
    {
        _environment = environment;
        _db = db;
    }

    
    [BindProperty]
    public Models.Pacientes DatosFiliacion { get; set; }

    [TempData]
    public string Mensaje { get; set; }

    public void OnGet()
    {

    }

    public async Task<IActionResult> OnPostAsync()
    {
        if (!ModelState.IsValid)
        {
            return Page();
        }

        var filePath = Path.Combine(_environment.WebRootPath,"uploads",Upload.FileName);
        using (var fileStream = new FileStream(filePath,FileMode.Create))
        {
            await Upload.CopyToAsync(fileStream);
        }

        using (var memoryStream = new MemoryStream())
        {
            
            await Upload.CopyToAsync(memoryStream);
            DatosFiliacion.FotoT = memoryStream.ToArray();
        }

        _db.Add(DatosFiliacion);
        await _db.SaveChangesAsync();
        return RedirectToPage("Index");
    }
}

结果:

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-