asp.net.mvc 的单文件上传和多文件上传的简单例子
首先打开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 的单文件上传和多文件上传的简单例子的更多相关文章
- ASP.NET MVC – 关于Action返回结果类型的事儿(上)
原文:ASP.NET MVC – 关于Action返回结果类型的事儿(上) 本文转自:博客园-文超的技术博客 一. ASP.NET MVC 1.0 Result 几何? Action的 ...
- ASP.NET MVC 表单的几种提交方式
下面是总结一下在ASP.NET MVC中表单的几种提交方式. 1.Ajax提交表单 需要引用 <script type="text/javascript" src=" ...
- asp.net MVC 框架中控制器里使用Newtonsoft.Json对前端传过来的字符串进行解析
下面我用一个实例来和大家分享一下我的经验,asp.net MVC 框架中控制器里使用Newtonsoft.Json对前端传过来的字符串进行解析. using Newtonsoft.Json; usin ...
- ASP.NET MVC 网站开发总结(三) ——图片截图上传
本着简洁直接,我们就直奔主题吧,这里需要使用到一个网页在线截图插件imgareaselect(请自行下载). 前台页面: <!DOCTYPE html> <html> < ...
- ASP.NET MVC 一款可预览、裁剪头像上传组件
今天介绍一款Web上常用的头像上传组件,常用于头像上传时对用户上传的图片进行裁剪并实时预览,最终效果如下: 源代码结构: Github地址: https://github.com/FrankFan/A ...
- Asp.Net Mvc表单提交之List集合
一.说明 1.Asp.Net Mvc中Action的参数可以自动接收和反序列化form表单的值, 2.对于name=value类型,只要Action参数的变量名和input的name相同就行,不区分大 ...
- [Asp.net MVC]Bundle合并,压缩js、css文件
摘要 在web优化中有一种手段,压缩js,css文件,减少文件大小,合并js,css文件减少请求次数.asp.net mvc中为我们提供一种使用c#代码压缩合并js和css这类静态文件的方法. 一个例 ...
- ASP.NET MVC 表单提交多层子级实体集合数据到控制器中
于遇到了项目中实体类嵌套多层子级实体集合,并且子级实体集合的数据需要提交保存到数据库中的问题.针对此情况需要进行一些特殊的处理才可以将整个 实体类及子级实体集合数据提交表单到控制器中,解决的方法是根据 ...
- Asp.net Mvc 表单验证(气泡提示)
将ASP.NET MVC或ASP.NET Core MVC的表单验证改成气泡提示: //新建一个js文件(如:jquery.validate.Bubble.js),在所有要验证的页面引用 (funct ...
随机推荐
- android桌面快捷方式跳转到指定activity
AndroidManifest.xml 应用主入口配置: <activity android:name="com.*.cust.contacts.MainActivity" ...
- PyCharm 134 单元测试输出大量空行解决方案
在某次BugFix中,某哥们儿在/helper/pycharm/tcunittest.py加了个这: 各位亲们可以把True改为False即可解决大量空行的问题.
- 物料分类账 [COML] PART 1 - 概览
物料分类账 [COML] PART 1 - 概览 一).原理 1). •实际成本/物料分类帐是产品成本控制模块的一个子模块,产品成本控制包括三个子模块,产品成本计划,成本对象控制,实际成本/物料分类帐 ...
- Windows下Git安装指南
参考<Git权威指南>安装整理,图书配套网址参见[1] 1. Cygwin下安装配置Git 1. 在Windows下安装配置Git有2种不同的方案 (1)msysGit, (2)Cygwi ...
- Devexpress HtmlEditor 上传本地图片
官方Demo地址:https://demos.devexpress.com/MVCxHTMLEditorDemos/Features/Features 控件的一定要包裹在form中 @using(Ht ...
- jQuery实现菜单点击隐藏(上下左右)
canrun <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www. ...
- (转)2G到C-RAN网络架构的演进
这是我一个学霸师弟写的一篇知识普及的文章,涉及到的知识结构很全面,很丰富,对网络通信技术感兴趣的童鞋可以看看,内容我就不贴过来了,直接到他博客上去看吧. 2G到C-RAN网络结构演进
- 二十五、【开源】EFW框架Winform前端开发之强大的自定义控件库
回<[开源]EFW框架系列文章索引> EFW框架源代码下载V1.2:http://pan.baidu.com/s/1hcnuA EFW框架实例源代码下载:http://pan ...
- (转)在低版本的SDK里使用高版本函数@SuppressLint("NewApi") or @TargetApi?
@SuppressLint 和 @TargetApi达到的效果是一样的,相对于SuppressLint ,TargetApi会根据函数里使用的API,严格匹配SDK版本,给出编译错误,但是Suppre ...
- Java知多少(106)程序与数据库连接
一个网络关系数据库应用系统是一个三层次结构.客户机与服务器采用网络连接,客户机端应用程序按通信协议与服务器端的数据库程序通信:数据库服务程序通过SQL命令与数据库管理系统通信. Java程序与数据库连 ...