[轉]asp.net mvc3 簡單的文件上傳下載


本文轉自:http://www.cnblogs.com/kaixing/archive/2011/11/10/2244634.html

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" }))
{
 
  //使用此控件會限制文件大小最大上傳4m
 
    可在web.config中配置<httpRuntime 
            executionTimeout= "5400 " 
            maxRequestLength= "2048000 " 文件大小
             useFullyQualifiedRedirectUrl= "false " 
          /> 
    <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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM