您的位置:首页 > 编程语言 > ASP

使用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>
本文出自 “编程软件教程|软件破解..” 博客,转载请与作者联系!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: