ASP.NET MVC 上传图片到项目目录中的文件夹并显示

ASP.NET MVC 上传图片到项目目录中的文件夹并显示

因项目需求,需要一个上传图片并显示的功能,类似于上传头像并显示出来。查阅了网上资料,写了个Demo,希望能帮助到更多的人。此Demo基于ASP.NET MVC实现。

 选择图片:

点击按钮进行上传: 

一、先在项目中新建一个文件夹用于存放图片 

                                         

二、View页面代码 

@{
    Layout = null;
}

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="~/Scripts/jquery-3.3.1.min.js"></script>
    <script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
</head>
<body>
    @using (Ajax.BeginForm("", null, new AjaxOptions() { OnSuccess = "PostSuc", OnFailure = "PostFail", HttpMethod = "Post" }, new { enctype = "multipart/form-data", id = "FormBaseData" }))
    {
        <input type="hidden" name="MouldId" id="MouldId" value="9527" />
        <input type="file" name="file1" />
        <input type="button" value="submit" id="btnSubmit" />
        <img src="" width="300" height="300" display:inline; alt="图片预览" id="mypicture" />
    }
</body>
</html>

<script type="text/javascript">
    $(document).ready(function () {
        $("#btnSubmit").bind("click", function () { Query(); });
    })

    function Query() {
        $("#FormBaseData").attr("data-ajax-success", "OnQuerySuccess(data)");
        $("#FormBaseData").attr("data-ajax-failure", "OnQueryFail()");
        $("#FormBaseData").attr("action", "/home/UploadImg");
        $("#FormBaseData").submit();
    }

    function OnQuerySuccess(data) {
        $("#mypicture").attr({ "src": data });
    }

    function OnQueryFail() {
        alert("发生错误!");
    }
</script>

三、Controller端代码 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace WebApplication1.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }

        [HttpPost]
        public ActionResult UploadImg(long MouldId)
        {
            string msg = string.Empty;
            if (Request.Files.Count > 0)
            {
                HttpPostedFileBase file = Request.Files["file1"];
                if (file.ContentLength < 5 * 1024 * 1024)
                {
                    string fileType = System.IO.Path.GetExtension(file.FileName);//获取文件类型
                    if (!System.IO.Directory.Exists(Server.MapPath("~/Pictures/")))
                    {
                        System.IO.Directory.CreateDirectory(Server.MapPath("~/Pictures/"));
                    }
                    string filePath = Server.MapPath("~/Pictures/");//保存文件的路径
                    if (fileType != null)
                    {
                        fileType = fileType.ToLower();//将文件类型转化成小写
                        if ("(.gif)|(.jpg)|(.bmp)|(.jpeg)|(.png)".Contains(fileType))
                        {
                            file.SaveAs(filePath + file.FileName);
                            string str = "Pictures/" + file.FileName;
                            msg = str;
                        }
                        else
                        {
                            msg = "只支持图片格式";
                        }
                    }
                }
                else
                {
                    msg= "图片大小不能超过5M";
                }
            }
            else
            {
                msg = "上传图片不能为空";
            }
            return Content(msg);
        }
    }
}

参考:https://blog.csdn.net/weixin_44540201/article/details/89630530

posted @ 2020-12-28 09:20  不要摸我的腰  阅读(768)  评论(0编辑  收藏  举报