ASP.NET MVC 上传图片例子

下面是一个简单用jquery 上传图片的例子,简单用到 <input type='file' 的html按钮。

网上还有很多jquery 插件,比如:Uploadify ,比如百度的webupload 等等 。

运行界面如下

 首先建立一个asp.net mvc 空项目,然后引入jquery.js 文件 。 

然后开始写代码

建立一个前后端用于图片上传的消息返回对象(model)

   public class ImageUploadResult
    {
        /// <summary>
        /// 上传状态:SUCCESS 或ERROR 
        /// </summary>
        public string state { get; set; }

        /// <summary>
        /// 图片地址 
        /// </summary>
        public string url { get; set; }

        /// <summary>
        /// 图片标题(我用guid代替原始标题)
        /// </summary>
        public string title { get; set; }

        /// <summary>
        /// 图片原标题
        /// </summary>
        public string original { get; set; }

        /// <summary>
        /// 错误内容
        /// </summary>
        public string error { get; set; }
    }

然后编辑controller

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

namespace NFine.Web.Controllers
{
    public class ImageUploadController : Controller
    {
         

        [HttpPost]
        public ActionResult UploadDrawing()
        {
            ImageUploadResult uploadRes = new ImageUploadResult();

            try
            {
                if (Request.Files.Count > 0)
                {
                    //该例子只存储第一个图片
                    HttpPostedFileBase file = Request.Files[0];

                    if (file.ContentLength > 0)
                    {
                        //日志文件夹路径
                        string LogFileWJJ = AppDomain.CurrentDomain.BaseDirectory + "MyDrawingImage";
                        if (System.IO.File.Exists(LogFileWJJ) == false)
                        {
                            //不存在MyLog文件夹就创建
                            Directory.CreateDirectory(LogFileWJJ);
                        }

                        //当前日期的文件夹路径
                        string jinTian = LogFileWJJ + "\\" + DateTime.Now.ToString("yyyyMMdd");
                        if (System.IO.File.Exists(jinTian) == false)
                        {
                            Directory.CreateDirectory(jinTian);
                        }

                        //图片guid名称
                        string lastname = Path.GetExtension(file.FileName);
                        string title = Guid.NewGuid().ToString() + lastname;

                        //string path = jinTian + "\\" + title;
                        string path = string.Format("../{0}/{1}/{2}", "MyDrawingImage", DateTime.Now.ToString("yyyyMMdd"), title);
                        path = System.Web.HttpContext.Current.Server.MapPath(path);
                        file.SaveAs(path);

                        uploadRes.state = "SUCCESS";
                        uploadRes.url = path;         //CurrentURL + "/Editor/ShowImage?imagetitle=" + title;
                        uploadRes.title = title;
                        uploadRes.original = file.FileName;
                        uploadRes.error = "";
                    }
                }
            }
            catch (Exception ex)
            {
                uploadRes.state = "ERROR";
                uploadRes.error = ex.Message;
            }

            return Json(uploadRes);
        }

    }

然后编辑view


@*upload test page*@
@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
 
    <script src="~/Contents/js/jquery/jquery.js"></script> 
</head>
<body>
    <div id="contentDIV"> 

        <div><p>原始jq按钮</p></div>
        
        <div id="yuanshi">
            <input type="file" id="upfile" name="upfile"  />
            <p>
                <input type="text" id="orgName" name="orgName" style="width:200px;" value="原始中文名" />
            </p>
            <p>
                <input type="text" id="succName" name="succName" style="width:900px;" value="服务器文件名称" />
            </p>
        </div>

    </div>

    <script type="text/javascript">

        $(function () {


            //简单上传按钮
            $("#upfile").on("change", function () {
                var file = this.files[0];
                var data = new FormData();
                data.append("file", file);
                console.log(data);
                console.log(file);

                $.ajax({
                    type: "post",
                    url: "/home/UploadDrawing",
                    data: data,
                    contentType: false,
                    //默认文件类型application/x-www-form-urlencoded  设置之后multipart/form-data
                    processData: false,
                    // 默认情况下会对发送的数据转化为对象 不需要转化的信息
                    success: function (res) {
                        //source = res.picAddr;
                        $('#succName').val(res.url);
                        $('#orgName').val(res.original);
                    },
                });
            });
 

        });  //end page ready

    </script>

</body>
</html>

这样就可以运行试试了。 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
ASP.NET MVC是一个用于构建Web应用程序的开发框架,它采用了模型-视图-控制器(Model-View-Controller,简称MVC)的设计模式。 下面是一个简单的ASP.NET MVC示例: 首先,我们可以创建一个控制器类。控制器负责处理用户的请求并返回响应,它可以包含多个动作方法。例如,我们可以创建一个名为HomeController的控制器类,其中包含一个名为Index的动作方法: ```csharp public class HomeController : Controller { public ActionResult Index() { return View(); } } ``` 然后,我们可以创建一个视图文件。视图负责展示数据给用户,并且通常与控制器的动作方法一一对应。在这个例子中,我们可以创建一个名为Index.cshtml的视图文件: ```html <!DOCTYPE html> <html> <head> <title>Home Page</title> </head> <body> <h1>Welcome to my website!</h1> </body> </html> ``` 最后,我们可以创建一个路由来处理URL和控制器之间的映射关系。路由确定了如何解释请求URL并调用相应的控制器和动作方法。在全局.asax.cs文件中,我们可以添加以下路由配置: ```csharp public class MvcApplication : System.Web.HttpApplication { protected void Application_Start() { // 路由配置 RouteConfig.RegisterRoutes(RouteTable.Routes); } } ``` 这个例子中,我们创建的路由将默认的URL(例如http://example.com/)映射到HomeController的Index动作方法。 当用户访问我们的网站首页时,控制器会处理请求并返回Index视图。然后,网站会显示一个简单的欢迎消息。 这只是一个简单的ASP.NET MVC示例,ASP.NET MVC框架还有很多其他功能和特性,可以帮助我们构建更复杂的Web应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值