首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果表格中没有附加最新的文件,如何保存最旧的照片?

如果表格中没有附加最新的文件,如何保存最旧的照片?
EN

Stack Overflow用户
提问于 2012-11-03 22:47:42
回答 1查看 110关注 0票数 1

我的控制器中有动作方法。如果照片是附加在形式,我的方法工作良好。如果在编辑操作中没有从表单上传照片,我的方法是从数据库中删除最旧的照片。如果表格中没有附加最新的文件,如何保存最旧的照片?

型号:

代码语言:javascript
运行
复制
[DisplayColumn("LastName")]
public class Driver
{
    [Key]
    public int Id { get; set; }

    [Display(Name="Full Name")]
    [DataType(DataType.Text)]
    public string FullName
    {
        get { return string.Concat(FirstName.Substring(0, 1), ".", LastName);}
    }

    [Required]
    [Display(Name = "First Name")]
    [DataType(DataType.Text)]
    public string FirstName { get; set; }

    [Display(Name = "Middle Name")]
    [DataType(DataType.Text)]
    public string MiddleName { get; set; }

    [Required]
    [Display(Name = "Last Name")]
    [DataType(DataType.Text)]
    public string LastName { get; set; }

    public byte[] DriverPhoto { get; set; }

}

控制器:

代码语言:javascript
运行
复制
    [HttpPost]
    public ActionResult Edit(Driver driver, HttpPostedFileBase fileUpload)
    {
        if(fileUpload != null)
        {
            var binaryReader = new BinaryReader(fileUpload.InputStream);
            driver.DriverPhoto = binaryReader.ReadBytes(fileUpload.ContentLength);
        }

        if (ModelState.IsValid)
        {

            db.Entry(driver).State = EntityState.Modified;

            db.SaveChanges();
            return RedirectToAction("Index");
        }

        return View(driver);
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-07 10:25:44

我修改了我的控制器代码如下:

代码语言:javascript
运行
复制
        [HttpPost]
    public ActionResult Edit(Driver driver, HttpPostedFileBase fileUpload)
    {
        if (fileUpload != null)
        {
            if (fileUpload.ContentType.ToLower() == "image/jpeg")
            {
                var binaryReader = new BinaryReader(fileUpload.InputStream);
                driver.DriverPhoto = binaryReader.ReadBytes(fileUpload.ContentLength);
            }
            else
            {
                ModelState.AddModelError("DriverPhoto","Illustrations should be uploaded in JPEG format.");
            }
    }

        if (ModelState.IsValid)
        {
            var entry = _db.Entry(driver);

            entry.State = EntityState.Modified;

            if (fileUpload == null)
            {
                entry.Property(t => t.DriverPhoto).IsModified = false;
            }

            _db.SaveChanges();
            return RedirectToAction("Index");
        }

        return View(driver);
    }

现在我的控制器以我想要的方式工作,但我不确定解决方案的正确性。

谢谢你的帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13210202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档