使用asp.net mvc3实现简单的文件上传与下载
2012-08-09 14:04
645 查看
web.config配置
<add name="连接字符串" connectionString="data source=服务器名;Initial Catalog=数据库;Persist Security Info=True;User ID=用户名;Password=密码" providerName="System.Data.SqlClient" />
建立数据库、表就省略了····
1.建立模型文件FileStores.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
namespace UpLoadFile.Models
{
[Table("FileStore")] // 关联表用
public class FileStore
{
public int ID { get; set; }
[DisplayName("文件类型")]
public string MimeType { get; set; }
[DisplayName("文件名")]
public string FileName { get; set; }
[DisplayName("文件路径")]
public string FileUrl { get; set; }
}
}
2.新建文件DbConnect.cs 建立数据库链接用
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
namespace UpLoadFile.Models
{
public class DbConnect : DbContext
{
public DbConnect(string connecting) : base(connecting) { }
public DbSet<FileStore> FileStores { get; set; }
}
}
3.建立控制器UploadController.cs,以下是代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.IO;
using UpLoadFile.Models;
namespace UpLoadFile.Controllers
{
public class UploadController : Controller
{
DbConnect db = new DbConnect("FileConnector");//数据库链接,FileConnector为web.config的链接字符串
public ActionResult Index()
{
return View();
}
//文件上传
public ActionResult Upload()
{
foreach (string upload in Request.Files)
{
if (!HasFiles.HasFile(Request.Files[upload])) continue;
string miniType = Request.Files[upload].ContentType;
Stream fileStream = Request.Files[upload].InputStream;
string path = AppDomain.CurrentDomain.BaseDirectory + "files\\";
string filename = Path.GetFileName(Request.Files[upload].FileName);
Request.Files[upload].SaveAs(Path.Combine(path, filename));
var files = new FileStore()
{
MimeType = miniType,
FileName = filename,
FileUrl = Path.Combine(path, filename)
};
db.FileStores.Add(files);//存储到数据库
db.SaveChanges();
}
return RedirectToAction("List");
}
//下载列表页
public ActionResult List()
{
var list = db.FileStores.ToList();
return View(list);
}
//文件下载
public FilePathResult Download(int id)
{
var fileinfo = db.FileStores.Find(id);
return File(fileinfo.FileUrl, fileinfo.MimeType, fileinfo.FileName);
}
}
public static class HasFiles
{
public static bool HasFile(this HttpPostedFileBase file)
{
return (file != null && file.ContentLength > 0) ? true : false;
}
}
}
4.视图文件
index.cshtml
@model UpLoadFile.Models.FileStore
@{
ViewBag.Title = "上传文件";
}
<h2>上传文件</h2>
@using (Html.BeginForm("Upload", "Upload", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<div id="files">
<input type="file" name="FileUpload" />
</div>
<input type="button" id="add" value="增加" />
<input type="submit" name="Submit" id="Submit" value="上传" />
}
<script type="text/javascript">
var n = 1;
$("#add").click(function () {
var filename = "FileUpload" + n;
$("#files").append("<input type=\"file\" name=\""+filename+"\" />");
n++;
});
</script>
其他页面自己建立,
下载<a href="@Url.Action("Download", new { id=Model.ID})">@Model.FileName</a>
本文出自 “编程软件教程|软件破解..” 博客,转载请与作者联系!
<add name="连接字符串" connectionString="data source=服务器名;Initial Catalog=数据库;Persist Security Info=True;User ID=用户名;Password=密码" providerName="System.Data.SqlClient" />
建立数据库、表就省略了····
1.建立模型文件FileStores.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
namespace UpLoadFile.Models
{
[Table("FileStore")] // 关联表用
public class FileStore
{
public int ID { get; set; }
[DisplayName("文件类型")]
public string MimeType { get; set; }
[DisplayName("文件名")]
public string FileName { get; set; }
[DisplayName("文件路径")]
public string FileUrl { get; set; }
}
}
2.新建文件DbConnect.cs 建立数据库链接用
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
namespace UpLoadFile.Models
{
public class DbConnect : DbContext
{
public DbConnect(string connecting) : base(connecting) { }
public DbSet<FileStore> FileStores { get; set; }
}
}
3.建立控制器UploadController.cs,以下是代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.IO;
using UpLoadFile.Models;
namespace UpLoadFile.Controllers
{
public class UploadController : Controller
{
DbConnect db = new DbConnect("FileConnector");//数据库链接,FileConnector为web.config的链接字符串
public ActionResult Index()
{
return View();
}
//文件上传
public ActionResult Upload()
{
foreach (string upload in Request.Files)
{
if (!HasFiles.HasFile(Request.Files[upload])) continue;
string miniType = Request.Files[upload].ContentType;
Stream fileStream = Request.Files[upload].InputStream;
string path = AppDomain.CurrentDomain.BaseDirectory + "files\\";
string filename = Path.GetFileName(Request.Files[upload].FileName);
Request.Files[upload].SaveAs(Path.Combine(path, filename));
var files = new FileStore()
{
MimeType = miniType,
FileName = filename,
FileUrl = Path.Combine(path, filename)
};
db.FileStores.Add(files);//存储到数据库
db.SaveChanges();
}
return RedirectToAction("List");
}
//下载列表页
public ActionResult List()
{
var list = db.FileStores.ToList();
return View(list);
}
//文件下载
public FilePathResult Download(int id)
{
var fileinfo = db.FileStores.Find(id);
return File(fileinfo.FileUrl, fileinfo.MimeType, fileinfo.FileName);
}
}
public static class HasFiles
{
public static bool HasFile(this HttpPostedFileBase file)
{
return (file != null && file.ContentLength > 0) ? true : false;
}
}
}
4.视图文件
index.cshtml
@model UpLoadFile.Models.FileStore
@{
ViewBag.Title = "上传文件";
}
<h2>上传文件</h2>
@using (Html.BeginForm("Upload", "Upload", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<div id="files">
<input type="file" name="FileUpload" />
</div>
<input type="button" id="add" value="增加" />
<input type="submit" name="Submit" id="Submit" value="上传" />
}
<script type="text/javascript">
var n = 1;
$("#add").click(function () {
var filename = "FileUpload" + n;
$("#files").append("<input type=\"file\" name=\""+filename+"\" />");
n++;
});
</script>
其他页面自己建立,
下载<a href="@Url.Action("Download", new { id=Model.ID})">@Model.FileName</a>
本文出自 “编程软件教程|软件破解..” 博客,转载请与作者联系!
相关文章推荐
- 使用Struts2简单的基本文件上传下载实现
- springmvc文件上传下载简单实现案例(ssm框架使用)
- 使用jsp/servlet简单实现文件上传与下载
- 使用简单的wcf文件实现上传,下载文件到服务器
- 简单实现的自定义圆环进度条,可使用于文件的上传下载图片加载等地方.
- springmvc文件上传下载简单实现案例(ssm框架使用)
- 使用jsp/servlet简单实现文件上传与下载
- springmvc文件上传下载简单实现案例(ssm框架使用)
- 使用Struts2实现简单的文件上传和下载
- springmvc文件上传下载简单实现案例(ssm框架使用)
- 使用PuTTy实现windows和linux之间文件上传下载
- JAVA中使用FTPClient实现文件上传下载
- iOS开发-使用NSURLSession实现文件断点下载,文件离线续传以及图片上传
- JAVA中使用FTPClient实现文件上传下载实例代码
- 【webserver】使用python实现webserver,支持上传下载文件
- Excel文件上传,解析,下载(一 文件上传,使用MultipartFile来实现)
- Java中使用多线程实现文件上传和下载
- Windows7中使用Task Scheduler调用WinScp批处理实现上传下载文件
- struts实现简单的文件上传与下载
- 使用Struts2实现文件的上传与动态下载(2)