首先打开vs2012,创建空的mvc4项目,名称为MVCStudy,选择基本模板

1)创建项目后,基本结构是这样的

2)建立对应的HomeController,视图index、fileupload、success、error页面

3)控制器源码

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

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

/// <summary>
        /// 成功返回页面
        /// </summary>
        /// <returns></returns>
        public ActionResult success() {
            return View();
        }

/// <summary>
        /// 失败返回页面
        /// </summary>
        /// <returns></returns>
        public ActionResult error() {
            return View();
        }

/// <summary>
        /// 单文件上传
        /// </summary>
        /// <param name="upfile">上传文件的对象</param>
        /// <returns></returns>
        public ActionResult FileUpload(HttpPostedFileBase upfile)
        {
            try
            {
                //文件不为空
                if (upfile != null)
                {
                    //创建年月文件夹,如201605
                    string fileFolder = DateTime.Now.ToString("yyyyMM");
                    //拼接保存时根路径,比如:D:Work/MVCTest/Uploads/201605
                    string pathForSaving = Server.MapPath("~/Uploads/") + fileFolder;
                    //判断文件夹是否存在,否则创建文件夹
                    if (this.CreateFolderIsNeeded(pathForSaving))
                    {
                        //判断上传文件的大小
                        if (upfile.ContentLength > 0)
                        {
                            //重新组合成一个存放路径,根路径+文件名称
                            string filepath = Path.Combine(pathForSaving, upfile.FileName);
                            upfile.SaveAs(filepath);
                        }
                    }
                    //返回成功提示页面
                    return RedirectToAction("success");
                }
            }
            catch (Exception e)
            {
                return RedirectToAction("error");
            }
            return View();
        }

/// <summary>
        /// 多文件上传的方法
        /// </summary>
        /// <param name="files"></param>
        /// <returns></returns>
        public ActionResult MultiUpload(IEnumerable<HttpPostedFileBase> files)
        {
            try {
                //判断多个文件是否为空
                if (files != null) {
                    //组合成文件的存放路径
                    string fileFolder = DateTime.Now.ToString("yyyyMM");
                    string pathForSaving = Server.MapPath("~/Uploads/") + fileFolder;
                    //判断存放路径是否存在,否则创建对应路径
                    if (this.CreateFolderIsNeeded(pathForSaving))
                    {
                        //循环遍历文件,并保存
                        foreach (var file in files)
                        {
                            if (file != null && file.ContentLength > 0)
                            {
                                var path = Path.Combine(pathForSaving, file.FileName);
                                file.SaveAs(path);
                            }
                        }
                    }
                    return RedirectToAction("success");
                }
                 
            }
            catch(Exception e){
                return RedirectToAction("error");
            }
            return View();
        }

/// <summary>
        /// 判断是否需要创建文件夹
        /// </summary>
        /// <param name="path">文件路径</param>
        /// <returns></returns>
        public bool CreateFolderIsNeeded(string path) {
            bool result = true;
            if (!Directory.Exists(path)) {
                try {
                    Directory.CreateDirectory(path);
                }
                catch(Exception ex){
                    result = false;
                }
            }
            return result;
        }
    }
}
4)页面的源码

单文件上传的页面

多文件上传的页面

成功页面

5)文件上传的效果图

a、单文件上传效果图

b、多文件上传效果图

c、上传后在项目路径下文件的效果图

asp.net.mvc 的单文件上传和多文件上传的简单例子的更多相关文章

  1. ASP.NET MVC – 关于Action返回结果类型的事儿(上)

    原文:ASP.NET MVC – 关于Action返回结果类型的事儿(上) 本文转自:博客园-文超的技术博客 一.         ASP.NET MVC 1.0 Result 几何? Action的 ...

  2. ASP.NET MVC 表单的几种提交方式

    下面是总结一下在ASP.NET MVC中表单的几种提交方式. 1.Ajax提交表单 需要引用 <script type="text/javascript" src=" ...

  3. asp.net MVC 框架中控制器里使用Newtonsoft.Json对前端传过来的字符串进行解析

    下面我用一个实例来和大家分享一下我的经验,asp.net MVC 框架中控制器里使用Newtonsoft.Json对前端传过来的字符串进行解析. using Newtonsoft.Json; usin ...

  4. ASP.NET MVC 网站开发总结(三) ——图片截图上传

    本着简洁直接,我们就直奔主题吧,这里需要使用到一个网页在线截图插件imgareaselect(请自行下载). 前台页面: <!DOCTYPE html> <html> < ...

  5. ASP.NET MVC 一款可预览、裁剪头像上传组件

    今天介绍一款Web上常用的头像上传组件,常用于头像上传时对用户上传的图片进行裁剪并实时预览,最终效果如下: 源代码结构: Github地址: https://github.com/FrankFan/A ...

  6. Asp.Net Mvc表单提交之List集合

    一.说明 1.Asp.Net Mvc中Action的参数可以自动接收和反序列化form表单的值, 2.对于name=value类型,只要Action参数的变量名和input的name相同就行,不区分大 ...

  7. [Asp.net MVC]Bundle合并,压缩js、css文件

    摘要 在web优化中有一种手段,压缩js,css文件,减少文件大小,合并js,css文件减少请求次数.asp.net mvc中为我们提供一种使用c#代码压缩合并js和css这类静态文件的方法. 一个例 ...

  8. ASP.NET MVC 表单提交多层子级实体集合数据到控制器中

    于遇到了项目中实体类嵌套多层子级实体集合,并且子级实体集合的数据需要提交保存到数据库中的问题.针对此情况需要进行一些特殊的处理才可以将整个 实体类及子级实体集合数据提交表单到控制器中,解决的方法是根据 ...

  9. Asp.net Mvc 表单验证(气泡提示)

    将ASP.NET MVC或ASP.NET Core MVC的表单验证改成气泡提示: //新建一个js文件(如:jquery.validate.Bubble.js),在所有要验证的页面引用 (funct ...

随机推荐

  1. 修改eclipse启动时eclipse使用的jre

    eclipse在启动的时候,和环境变量中的jdk不兼容,可以单独制定eclipse运行的jre. 方法: 在eclipse的配置文件里增加-vm参数即可. 打开eclipse目录下的eclipse.i ...

  2. [原] JsTree.js

    写自用软件系统时查找到的树列表控件过于庸余,样式难调,故自写一套完整的简易js_TreeTable控件,使用时简单的添加自定义的样式效果即可,特此发布第一个版本. 源码如下: /* * Huashan ...

  3. jQuery插件:模拟select下拉菜单

    没搞那么复杂,工作中,基本够用.. <!doctype html> <html> <head> <meta charset="utf-8" ...

  4. OceanBase RPC机制简要说明

    http://note.youdao.com/share/?id=d2163a7ba8ec1ec58e64683a961c5121&type=note RPC是OB一个比较重要的各个组件间进行 ...

  5. CSS - DIV标签width根据内容自适应

    设置样式: 父标签{ width: auto; display: inline-block; } 子标签 { // 内容自动填充父节点宽度: } JSFiddle Demo: http://jsfid ...

  6. CSS基础(六):浮动深入

    参考了<CSS彻底设计研究>的文章,说的很不错,所以拿来做笔记. 浮动 在标准流中,一个块级元素在水平方向会自动伸展,直到包含它的元素边界:而在竖直方向和兄弟元素依次排列,不能并排.使用浮 ...

  7. dlib库使用

    最近的工作中用到了dlib这个库,该库是一个机器学习的开源库,使用起来很方便,直接包含头文件即可,并且不依赖于其他库(自带图像编解码库源码).不过由于是开源的,所以bug多少有一些,我在example ...

  8. Unity3d导出Android的apk文件时相关问题的解决办法

    今天上午着手将一个unity3d开发的小游戏build到android手机上运行,结果遇到了不少问题. 首先遇到的第一个问题是在build到一半的时候,弹出如下报错: Error building P ...

  9. IOS的浅拷贝和深拷贝

    什么是深拷贝和浅拷贝 浅拷贝:就是指针的复制,拷贝的指针跟原指针指向内存中的同一个位置的对象.至于对象的引用计数值是否+1,就是看拷贝的指针赋给给的变量是Strong类型的,还是week类型的. 如果 ...

  10. 协作图 Collaboration diagram

    概述 协作图也是一种交互图,但一般用的比较少,一般用在大概分析一下对象之间是怎样交互的,跟顺序图是可以相互转化的. 协作图的用处: 在分析的时候(而顺序图一般设计的时候),分析出有哪些对象: 在白板上 ...