توضیحات و دانلود

آپلود فایل ها، ذخیره در پایگاه داده، بازیابی (نمایش) و دانلود فایل ها از پایگاه داده در ASP.Net MVC
0 0
آپلود فایل ها، ذخیره در پایگاه داده، بازیابی (نمایش) و دانلود فایل ها از پایگاه داده در ASP.Net MVC

با سلام در این مقاله با مثال توضیح خواهیم داد که چگونه فایل های آپلود، ذخیره (وارد کردن) به جدول پایگاه داده، بازیابی (نمایش) فایل ها از جدول پایگاه داده و دانلود فایل ها از جدول پایگاه داده در  انجام دهیم ASP.Net MVC Razor.
فایل ها آپلود می شوند و پس از آن در جدول پایگاه داده ذخیره می شوند (وارد شده). فایل های ذخیره شده (وارد شده)در جدول HTML بازیابی و نمایش داده می شوند . جدول HTML شامل یک لینک برای دانلود فایل از پایگاه داده است.
بانک اطلاعاتی
این مقاله از یک جدول با نام tblFiles استفاده می کند که شیوه آن به شرح زیر تعریف شده است.

 توجه :

شما می توانید جدول پایگاه داده SQL را با کلیک روی لینک دانلود کنید. فایل SQL را دانلود کنید
فضاهای نام
شما باید فضای نامهای زیر را وارد کنید.

using System.IO;
using System.Configuration;
using System.Data.SqlClient;
using System.Collections.Generic;

Model
کلاس مدل زیر شامل ویژگی زیر است که برای قرار دادن و پرکردن سوابق فایل ها از پایگاه داده مورد نیاز است.

public class FileModel
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string ContentType { get; set; }
    public byte[] Data { get; set; }
}

Controller
Controller شامل سه روش  است :
روش بررسی عملیات GET
 این روش ، روش GetFiles نامیده می شود.
در این روش GetFiles، سوابق از جدول tblFiles با استفاده از DataReader جمع و لیست کلی از اشیاء کلاس Class FileModel پر میشود .
در نهایت لیست کلی از اشیاء کلاس FileModel به View باز می گردد.
روش اداره عملیات POST برای آپلود فایل ها
در این روش هنگامی که یک فایل انتخاب و دکمه بارگذاری بر روی آن کلیک می شود، فایل آپلود شده در پارامتر HttpPostedFileBase است .
فایل آپلود شده با استفاده از کلاس BinaryReader به آرایه ای از بایدها تبدیل می شود و در نهایت به جدول پایگاه داده وارد می شود.
بعد از قرار دادن فایل موفق، روش GetFiles نامیده می شود و لیست کلی از اشیاء کلاس FileModel به View باز می گردد.
روش اداره عملیات POST برای دانلود فایل ها
هنگامی که لینک دانلود داخل جدول HTML (Grid) کلیک می شود، سپس شناسه فایل خاص به این روش ارسال می شود و با استفاده از شناسه فایل، داده های باینری پرونده از پایگاه داده استخراج می شود.
توجه :

روش زیر اقدام به دانلود فایل می کند و از این رو نوع بازگشت به FileResult تنظیم شده است.
در نهایت فایل با استفاده از تابع فایل دانلود می شود.

public class HomeController : Controller
{
    // GET: Home
    public ActionResult Index()
    {
        return View(GetFiles());
    }
 
    [HttpPost]
    public ActionResult Index(HttpPostedFileBase postedFile)
    {
        byte[] bytes;
        using (BinaryReader br = new BinaryReader(postedFile.InputStream))
        {
            bytes = br.ReadBytes(postedFile.ContentLength);
        }
        string constr = ConfigurationManager.ConnectionStrings["ConString"].ConnectionString;
        using (SqlConnection con = new SqlConnection(constr))
        {
            string query = "INSERT INTO tblFiles VALUES (@Name, @ContentType, @Data)";
            using (SqlCommand cmd = new SqlCommand(query))
            {
                cmd.Connection = con;
                cmd.Parameters.AddWithValue("@Name", Path.GetFileName(postedFile.FileName));
                cmd.Parameters.AddWithValue("@ContentType", postedFile.ContentType);
                cmd.Parameters.AddWithValue("@Data", bytes);
                con.Open();
                cmd.ExecuteNonQuery();
                con.Close();
            }
        }
 
        return View(GetFiles());
    }
 
    [HttpPost]
    public FileResult DownloadFile(int? fileId)
    {
        byte[] bytes;
        string fileName, contentType;
        string constr = ConfigurationManager.ConnectionStrings["ConString"].ConnectionString;
        using (SqlConnection con = new SqlConnection(constr))
        {
            using (SqlCommand cmd = new SqlCommand())
            {
                cmd.CommandText = "SELECT Name, Data, ContentType FROM tblFiles WHERE Id=@Id";
                cmd.Parameters.AddWithValue("@Id", fileId);
                cmd.Connection = con;
                con.Open();
                using (SqlDataReader sdr = cmd.ExecuteReader())
                {
                    sdr.Read();
                    bytes = (byte[])sdr["Data"];
                    contentType = sdr["ContentType"].ToString();
                    fileName = sdr["Name"].ToString();
                }
                con.Close();
            }
        }
 
        return File(bytes, contentType, fileName);
    }
 
    private static List<FileModel> GetFiles()
    {
        List<FileModel> files = new List<FileModel>();
        string constr = ConfigurationManager.ConnectionStrings["Constring"].ConnectionString;
        using (SqlConnection con = new SqlConnection(constr))
        {
            using (SqlCommand cmd = new SqlCommand("SELECT Id, Name FROM tblFiles"))
            {
                cmd.Connection = con;
                con.Open();
                using (SqlDataReader sdr = cmd.ExecuteReader())
                {
                    while (sdr.Read())
                    {
                        files.Add(new FileModel
                        {
                            Id = Convert.ToInt32(sdr["Id"]),
                            Name = sdr["Name"].ToString()
                        });
                    }
                }
                con.Close();
            }
        }
        return files;
    }
}

View
 شما باید در داخل کلاس Controller راست کلیک کنید و بر روی گزینه Add View کلیک کنید تا یک View برای Controllerایجاد شود.
نام View به Index تنظیم شده است، گزینه Template به Empty و کلاس Model به FileModel تنظیم شده است .

در داخل View، در خط اول، کلاس FileModel به عنوان IEnumerable اعلام می شود که مشخص می کند که آن به عنوان مجموعه در دسترس خواهد بود.
View شامل دو فرم است:
فرم برای آپلود فایل
این فرم شامل فایل File Upload و Submit Button می باشد. هنگامی که روی دکمه کلیک می شود، روش Index Action برای اداره عملیات POST نامیده می شود.
فرم برای بارگیری فایل
این فرم متشکل از HTML HiddenField و دکمه ارسال پنهان است. هنگامی که هر پیوند دانلود در داخل جدول HTML (Grid) کلیک می شود،  FunctionFileJavascript function نامیده می شود که FileId را به HiddenField می دهد و رویداد کلیک روی دکمه Submit را وارد می کند که فرم را ارسال می کند.
هنگامی که فرم ارسال می شود، روش ActionFile Action نامیده می شود که عملیات دانلود فایل را اجرا می کند.
نمایش فایل ها
برای نمایش فایل ها، یک جدول HTML استفاده می شود. یک حلقه بر روی مدل اجرا می شود که ردیف های جدول HTML را با پرونده های فایل تولید می کند.

@model  IEnumerable<Upload_File_Database_MVC.Models.FileModel>
 
@{
    Layout = null;
}
 
<!DOCTYPE html>
 
<html>
<head>
    <meta name="viewport" content="width=device-width"/>
    <title>Index</title>
</head>
<body>
    @using (Html.BeginForm("Index", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
    {
        <input type="file" name="postedFile"/>
        <input type="submit" id="btnUpload" value="Upload"/>
    }
    @using (Html.BeginForm("DownloadFile", "Home", FormMethod.Post))
    {
        <input type="hidden" id="hfFileId" name="FileId"/>
        <input type="submit" id="btnDownload" value="Download" style="display:none"/>
    }
    <hr/>
    <table cellpadding="0" cellspacing="0">
        <tr>
            <th style="width:50px">File ID</th>
            <th style="width:120px">File Name</th>
            <th style="width:80px">Download</th>
        </tr>
        @if (Model.Count() > 0)
        {
            foreach (var file in Model)
            {
                <tr>
                    <td>@file.Id</td>
                    <td>@file.Name</td>
                    <td><a href="javascript:;" onclick="DownloadFile(@file.Id)">Download</a></td>
                </tr>
            }
        }
        else
        {
            <tr>
                <td colspan="3">&nbsp;</td>
            </tr>
        }
    </table>
    <script src="~/Scripts/jquery-1.10.2.min.js"></script>
    <script type="text/javascript">
        function DownloadFile(fileId) {
            $("#hfFileId").val(fileId);
            $("#btnDownload")[0].click();
        };
    </script>
</body>
</html>

 


دانلود
  • لینک های دانلود دوره های آموزشی تا پایان دوره قابل دانلود می باشد.
  • برای خارج کردن فایل ها از حالت فشرده از ورژن جدید نرم افزار winrar استفاده کنید.
  • برای خارج کردن فایل ها از حالت فشرده لینک های دانلودی که چندین قسمت می باشند فقط قسمت اول را از حالت فشرده خارج کنید.
  • لطفا توضیحات نوشته شده برای مطالب را با دقت بخوانید.
  • برای نمایش فیلم ها می توانید از نرم افزار هایی مانند Km Player , VLC Player یا Media Player Classic استفاده کنید.

ارسال نظر
ارسال پیام به :