首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在mvc5中更新/删除上传的图片

在ASP.NET MVC5中更新或删除上传的图片,通常涉及到以下几个步骤:

基础概念

MVC(Model-View-Controller)是一种设计模式,用于将应用程序的数据模型、用户界面和控制逻辑分离。在MVC5中,更新或删除图片通常需要:

  1. Model:定义数据模型,通常是数据库中的表。
  2. View:显示数据的用户界面。
  3. Controller:处理用户输入,更新模型并返回视图。

更新图片

更新图片通常涉及以下步骤:

  1. 上传新图片:用户上传新图片。
  2. 保存新图片:将新图片保存到服务器。
  3. 更新数据库:更新数据库中记录的图片路径。

示例代码

代码语言:txt
复制
// Controller
public ActionResult UpdateImage(int id)
{
    var image = db.Images.Find(id);
    if (Request.Files.Count > 0)
    {
        var file = Request.Files[0];
        if (file != null && file.ContentLength > 0)
        {
            string path = Path.Combine(Server.MapPath("~/Images"), file.FileName);
            file.SaveAs(path);
            image.ImagePath = "~/Images/" + file.FileName;
            db.SaveChanges();
        }
    }
    return RedirectToAction("Index");
}

删除图片

删除图片通常涉及以下步骤:

  1. 删除图片文件:从服务器上删除图片文件。
  2. 更新数据库:更新数据库中记录的图片路径。

示例代码

代码语言:txt
复制
// Controller
public ActionResult DeleteImage(int id)
{
    var image = db.Images.Find(id);
    if (image != null)
    {
        string path = Server.MapPath(image.ImagePath);
        if (System.IO.File.Exists(path))
        {
            System.IO.File.Delete(path);
        }
        db.Images.Remove(image);
        db.SaveChanges();
    }
    return RedirectToAction("Index");
}

应用场景

这些操作通常用于用户个人资料更新、产品图片更新等场景。

常见问题及解决方法

  1. 图片路径错误:确保图片路径正确,并且服务器有权限访问该路径。
  2. 文件上传大小限制:检查Web.config中的<httpRuntime>标签,调整maxRequestLengthexecutionTimeout属性。
  3. 文件类型验证:确保上传的文件是允许的图片类型,可以使用MIME类型或扩展名进行验证。

示例代码(文件类型验证)

代码语言:txt
复制
// Controller
public ActionResult UpdateImage(int id)
{
    var image = db.Images.Find(id);
    if (Request.Files.Count > 0)
    {
        var file = Request.Files[0];
        if (file != null && file.ContentLength > 0)
        {
            string allowedExtensions = ".jpg,.jpeg,.png,.gif";
            if (allowedExtensions.Contains(Path.GetExtension(file.FileName).ToLower()))
            {
                string path = Path.Combine(Server.MapPath("~/Images"), file.FileName);
                file.SaveAs(path);
                image.ImagePath = "~/Images/" + file.FileName;
                db.SaveChanges();
            }
            else
            {
                ModelState.AddModelError("file", "Invalid file type.");
            }
        }
    }
    return RedirectToAction("Index");
}

参考链接

通过以上步骤和示例代码,您可以在ASP.NET MVC5中实现图片的更新和删除功能。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Discourse 图片上传更新

Blog Discourse 对图片上传进行了比较大优化,主要是采取了 HTML5 图片上传预处理技术。...上面是这次更新处理逻辑,主要是为了方便用户在上传手机图片时候进行预压缩。 这是因为手机图片大小通常都比较大,如果使用原图上传的话,将会导致大量占据存储空间,其实也是没有必要。...根据官方博客内容显示,图片大小被压缩得比较小,但是图片效果却没有大量改变。 根据官方对比来看,图片上传大小被大量压缩了。...建议所有使用 Discourse 站点升级到最新版本,以便于保持更高效运行。 同时因为图片大小变化,也会提升站点传输速度。...压缩算法是在客户端进行,只要是支持 HTML5 浏览器都可以使用,因此不会额外增加服务器处理资源。 https://www.ossez.com/t/discourse/13628

57100
  • Django 图片上传及显示

    在 Django 上传文件不同于普通服务器上传方法,在普通服务器只需要使用一个 Controller 来控制文件上传即可完成,但是在 Django ,则需要额外使用数据库资源来存储文件。...,而是 Django 将会自动将文件上传到你设置位置,并且把上传之后图片 path 存入数据库,这样你只需要访问数据库 path 即可访问到图片。.../media/img 文件夹,在上传完成之后,img 将会保存图片 path。...path('file/image_upload', views.file__image_upload) ] 上传图片和访问图片 完成这些后,你只需要在前端需要上传图片地方将 url 指向这个地址,就能将图片成功上传...,上传完成之后你可以使用 /media/ 加上数据库图片 path 就能访问到图片

    3.3K20

    thinkPHP利用ajax异步上传图片并显示、删除示例

    近来学习tp5过程,项目中有个发帖功能,选择主题图片。如下: ? 利用原始文件上传处理,虽然通过原始js语句能实时显示上传图片,但是这样的话会涉及很多兼容问题。...使用ajax技术,实现选择性删除所选图片功能,并不会有兼容问题。...inline-block;width: 100px;height:30px;line-height: 30px;text-align:center;background: #F60;color: #FFF;" 图片上传...当我们点击上传图片这个button按钮时触发选择图片实现Ajax上传 JavaScript代码: <script type="text/javascript" src="__STATIC__/home/...以上就是本文<em>的</em>全部内容,希望对大家<em>的</em>学习有所帮助,也希望大家多多支持网站事(zalou.cn)。

    1.6K31

    thinkPHP利用ajax异步上传图片并显示、删除示例

    近来学习tp5过程,项目中有个发帖功能,选择主题图片。如下: 利用原始文件上传处理,虽然通过原始js语句能实时显示上传图片,但是这样的话会涉及很多兼容问题。...使用ajax技术,实现选择性删除所选图片功能,并不会有兼容问题。...inline-block;width: 100px;height:30px;line-height: 30px;text-align:center;background: #F60;color: #FFF;">图片上传...当我们点击上传图片这个button按钮时触发选择图片实现Ajax上传 JavaScript代码: <script type="text/javascript" src="__STATIC__/home/...()); } } } 改善后<em>的</em>效果图: 以上就是本文<em>的</em>全部内容,希望对大家<em>的</em>学习有所帮助,也希望大家多多支持。

    1.5K30

    何在keras添加自己优化器(adam等)

    2、找到keras在tensorflow下根目录 需要特别注意是找到keras在tensorflow下根目录而不是找到keras根目录。...一般来说,完成tensorflow以及keras配置后即可在tensorflow目录下python目录中找到keras目录,以GPU为例keras在tensorflow下根目录为C:\ProgramData...找到optimizers.pyadam等优化器类并在后面添加自己优化器类 以本文来说,我在第718行添加如下代码 @tf_export('keras.optimizers.adamsss') class...# 传入优化器名称: 默认参数将被采用 model.compile(loss=’mean_squared_error’, optimizer=’sgd’) 以上这篇如何在keras添加自己优化器...(adam等)就是小编分享给大家全部内容了,希望能给大家一个参考。

    45K30

    何在 iOS 源码包含图片

    首先,先分享一个很实用开源库。 通过添加这个开源库,笔者 80% 调试工作都可以用这个库完成,而无需 Xcode 工具。...* 查看对象内存依赖关系 * 浏览 APP 下各类文件(图片文件可以直接预览) * 查看某个类存在实例(判断是否有内存泄露) 当然,也有一些不好地方。...通过查看该文件发现,它通过一些特殊技巧将图片资源放到了源码,导致 infer 需要分析一个超长 c 数组。 截取部分代码如下: ? ? ?...static const u_int8_t FLEXCloseIcon[] = {0x89, 0x50, 0x4e, 0x47, 1、通过 16 进制存储图片二进制信息 2、获取图片时,判断屏幕类型,...NSData 对象 4、通过 UIImage 类方法将 NSData 对象转为 UIImage 并返回 至此,图片成功通过 16 进制方式隐藏到了源码

    1.4K40

    何在Linux删除目录所有文件?

    在Linux操作系统删除目录所有文件是一项常见任务。无论是清理不需要文件还是准备删除整个目录,正确地删除目录下所有文件是重要。...本文将详细介绍如何在Linux删除目录所有文件,包括使用常见命令和技巧进行操作。删除目录下所有文件在Linux,有几种方法可以删除目录下所有文件。...使用 -r 选项可以递归地删除目录及其子目录文件。...例如,在/tmp中有如下文件:ls /tmp/*图片如果需要删除该目录下所有文件,可以执行命令:rm -r /tmp图片请务必小心使用 rm 命令,因为它会直接删除文件,而无需确认。...总结正确地删除目录下所有文件是Linux系统常见任务之一。

    16K40

    何在遍历同时删除ArrayList 元素

    3、使用Java 8 中提供filter 过滤Java 8 可以把集合转换成流,对于流有一种filter 操作, 可以对原始Stream 进行某项测试,通过测试元素被留下来生成一个新Stream。...Hollis")).collect(Collectors.toList());System.out.println(userNames);4、使用增强for 循环其实也可以如果,我们非常确定在一个集合,...某个即将删除元素只包含一个的话, 比如对Set 进行操作,那么其实也是可以使用增强for 循环,只要在删除之后,立刻结束循环体,不要再继续进行遍历就可以了,也就是说不让代码执行到下一次next 方法...Java ,除了一些普通集合类以外,还有一些采用了fail-safe 机制集合类。...由于迭代时是对原集合拷贝进行遍历,所以在遍历过程对原集合所作修改并不能被迭代器检测到,所以不会触发ConcurrentModificationException。

    3.8K81

    何在Mac上软件更新隐藏MacOS Catalina更新提示

    有好多小伙伴不愿意升级到MacOS Catalina,但是电脑上有系统更新红点,那么怎么去除呢,下面教大家如何在Mac上软件更新隐藏MacOS Catalina,Mac取消系统更新红点。...1.退出系统偏好设置 2.在Mac上启动终端应用程序,该应用程序位于/ Applications / Utilities /文件夹 3.在“终端”命令行输入以下命令: sudo softwareupdate...随着MacOS Catalina不再占据主要“软件更新”屏幕,您将继续收到有关安全更新,Safari更新,iTunes更新以及当前正在运行MacOS版本任何其他软件版本传入软件更新通知。...如何在软件更新再次使MacOS Catalina升级可用 取消隐藏MacOS Catalina并使MacOS 10.15更新再次可用,您可以执行以下两项操作之一。...要使MacOS Catalina升级再次出现在“软件更新,请返回命令行并使用以下命令行语法清除并重置被忽略软件更新列表: sudo softwareupdate --reset-ignored 再次使用管理员密码进行身份验证

    5.2K20

    何在git删除指定文件和目录

    部分场景,我们会希望删除远程仓库(比如GitHub)目录或文件。...具体操作 拉取远程Repo到本地(如果已经在本地,可以略过) $ git clone xxxxxx 在本地仓库删除文件 $ git rm 我文件 在本地仓库删除文件夹 $ git rm -r...我文件夹/ 此处-r表示递归所有子目录,如果你要删除,是空文件夹,此处可以不用带上-r。...提交代码 $ git commit -m"我修改" 推送到远程仓库(比如GitHub) $ git push origin xxxxxx 补充: git rm 查看git rm说明文档: $ git...-n, --dry-run 演习 -q, --quiet 不列出删除文件 --cached 只从索引区删除 -f, --force 忽略文件更新状态检查 -r 允许递归删除 --ignore-unmatch

    3.5K20

    Flutter相机拍照、相册选择图片上传图片到服务器

    需要注意是,image_picker这个第三方组件只能是单选图片,如果大家有多选图片需要,可以自己去pub.dev上面去搜索,本文只是针对“选择图片上传”这一功能点做思路介绍,所以对于各种第三方...File _image; //当图片上传成功后,记录当前上传图片在服务器位置 String _imgServerPath; //拍照 Future _getImageFromCamera.../daoyXVTvrCCUeoIliZtNXX-s.png"), ], ), ), ); } } 选择完了图片之后,点击上传图片按钮进行图片网络上传...简单说一下选择图片以及图片上传思路。 本文选择获取图片第三方是只能选择一张图片,在后期项目中,我们肯定会要求多选,所以大家自己去寻找可以拍摄多张图片或者可以在相册中选择多张图片第三方组件。...选择好了图片之后,我们将选择图片记录下来,然后采取Dio这个第三方网络库上传图片,可以上传一张图片,也可以上传多张图片,但时候大家在项目中使用时候,一定要实现详细阅读使用文档和Demo,我这里示例仅仅是演示了上传一张图片场景

    21.1K32

    ubuntusnap包安装、更新删除与简单使用

    但是由此带来问题就是它占用更多磁盘空间 Snap安装包扩展名是.snap,类似于一个容器,它包含一个应用程序需要用到所有文件和库(snap包包含一个私有的root文件系统,里面包含了依赖软件包... 更新一个snap包,如果你后面不加包名字的话那就是更新所有的snap包 sudo snap revert 把一个包还原到以前安装版本 sudo...snap remove 删除一个snap包 简单使用 下面我就安装一个编辑器来演示怎么安装删除一个软件包 首先我想安装hello-world 那么先找一下有没有hello-world...Version Rev Developer Notes core 16-2.28.5 3247 canonical core hello-world 6.3 27 canonical - 最后我们删除它...douban-fm" snap 6 Doing 2017-11-15T03:34:27Z - Install "douban-fm" snap 没错install douban-fm还在doing

    10.6K21

    Ubuntusnap包安装,删除更新使用入门教程

    搜索要安装snap包 sudo snap find 安装一个snap包 sudo snap install 更新一个snap包,如果你后面不加包名字的话那就是更新所有的snap包 sudo snap...refresh 把一个包还原到以前安装版本 sudo snap revert 删除一个snap包 sudo snap remove 简单使用 下面我就安装一个编辑器来演示怎么安装删除一个软件包...解决方式很简单 首先查看一下正在进行change 没错install ubuntu-calculator-app在doing,所以要终止这个进程 之后再次执行安装就好了 查询最近做操作 $ snap...免责声明:本站发布内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:zbxhhzj@qq.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容...转载本站文章请保留原文链接,文章内说明不允许转载该文章,请不要转载该文章,谢谢合作。

    3.2K20

    消除图片在ie缓存而无法更新问题

    程序图片是动态显示原先把打算把图片保存在服务器端然后显示可是由于ie缓存问题导致图片无法实时更网络 程序图片是动态显示...原先把打算把图片保存在服务器端然后显示 可是由于ie缓存问题导致图片无法实时更新显示 所以改为把图片存在session然后再显示 需要保存时候再保存到本地 //--------------chart.ashx.cs...WebApplication3.ChartHandler" codebehind="chart.ashx.cs" %> //WebApplication3为命名空间 //ChartHandler为chart.ashx.cs名字...  //--------------调用说明----------------- //需要把图片存到byte数组 假设为byteArr  则    // ------------------------...,不需要配置web.config也不需要更新IIS扩展名映射 本文由来源 21aspnet,由 system_mush 整理编辑,其版权均为 21aspnet 所有,文章内容系作者个人观点,

    86020
    领券