آپلود و دانلود فایل درASP.NET

در این مقاله قصد داریم نحوه آپلود فایل و باز کردن فایل درBrowser و نحوه دانلود فایل آپلود شده را مورد بررسی قرار دهیم.

آپلود و دانلود فایل درASP.NET

در این مقاله ما میخواهیم در مورد چند مورد:

1-چگونگی آپلود فایل به همراه یک مثال تصویر

2-چگونگی باز کردن فایل در Browser

3-چگونگی دانلود فایل آپلود شده.

 

-بارگذاری یک فایل :(NewFriend.aspx)

در این صفحه، ما یک دوست جدید را مورد تایید و و به همراه یک عکس وارد میکنیم.

لیست دوستان:(FriendList.aspx)

ما میتوانیم بارگذاری و رسیدن فایل از طرف کاربر با کمک کنترل FileUpload را مشاهده کنیم.

ما باید اجازه upload را بدهیم که به نکته های زیر باید توجه کنیم:

1-بررسی کردن سایز فایل.ما میتوانیم سایز فایل را محدود بکنیم. 

2-پسوند فایل.ما میتوانیم پسوند فایل را محدود بکنیم.

هنگامی که ما در حال ثبت فایل ارسالی کاربر هستیم اطلاعات اضافی فایل نظیر DateTime , UserID or Friend ID را هم دریافت میکنیم.

هنگامی که مدیر سایت عکس فولدر را مشاهده میکند اینجا، ما  فقط image و View را روی یک پنجره ی جدید در Browser بارگذاری میکنیم.

 

<asp:TemplateField HeaderText="Photo">  
    <ItemTemplate>  
       <asp:Image ID="imgPicture" runat="server" ImageUrl='<%# Eval("FriendImage", "~/FriendPhoto/{0}") %>' Width="200px" />  
     </ItemTemplate>  
</asp:TemplateField>

کد نمایش دادن در صفحه ی جدید: ViewImage.aspx

protected void btnView_Click(object sender, EventArgs e)  
   {  
        LinkButton lnkbtn = sender as LinkButton;  
        GridViewRow gvrow = lnkbtn.NamingContainer as GridViewRow;  
        string filePath = "~//FriendPhoto//" + gvFriend.DataKeys[gvrow.RowIndex].Value.ToString();  
  
        Response.Write(String.Format("<script>window.open('{0}','_blank');</script>", "viewImage.aspx?fn=" + filePath));  
    }  

در  GridView ما یک دکمه داریم به نام  View.

کد دانلود عکس انتخاب شده:

protected void btnDownload_Click(object sender, EventArgs e)  
    {  
        Button btn = sender as Button;  
        GridViewRow gvrow = btn.NamingContainer as GridViewRow;  
        string filePath = "FriendPhoto\\"+gvFriend.DataKeys[gvrow.RowIndex].Value.ToString();  
        Response.ContentType = "image/jpg";  
        Response.AddHeader("Content-Disposition", "attachment;filename=\"" + filePath + "\"");  
        Response.TransmitFile(Server.MapPath(filePath));  
        Response.End();  
    }  

 

-- درست کردن پروژه:

ساختن یک صفحه ی پروژه  ASP.NET Empty Web Site به نام FileUploadAndViewAndDownload

 

-- اضافه کردن 3 صفحه ی Web Forms 

 

-- اضافه کردن فولدر جدید به نام FRIENDPHOTO.

--Web.Config 

بروزرسانی Web.Config  با sql server

<connectionStrings>  
 <add name="fileuploadConnectionString" connectionString="Data Source=192.168.1.50\sa;Initial Catalog=mbktest;Persist Security Info=True;User ID=sa;Password=clserver" providerName="System.Data.SqlClient"/>  
  </connectionStrings>  

 

کد FriendList.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="FriendList.aspx.cs" Inherits="FriendList" EnableEventValidation="true" %>  
  
<!DOCTYPE html>  
  
<html xmlns="http://www.w3.org/1999/xhtml">  
<head runat="server">  
    <title></title>  
</head>  
<body>  
    <form id="form1" runat="server">  
    <div>  
        <a href="NewFriend.aspx">Insert An New Friend</a>  
        <asp:GridView ID="gvFriend" DataKeyNames="FriendImage" runat="server" AutoGenerateColumns="false" BackColor="#DEBA84" BorderColor="#DEBA84" BorderStyle="None" BorderWidth="1px" CellPadding="3" CellSpacing="2">  
            <FooterStyle BackColor="#F7DFB5" ForeColor="#8C4510" />  
            <HeaderStyle BackColor="#A55129" Font-Bold="True" ForeColor="White" />  
            <PagerStyle ForeColor="#8C4510" HorizontalAlign="Center" />  
            <RowStyle BackColor="#FFF7E7" ForeColor="#8C4510" />  
            <SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="White" />  
            <SortedAscendingCellStyle BackColor="#FFF1D4" />  
            <SortedAscendingHeaderStyle BackColor="#B95C30" />  
            <SortedDescendingCellStyle BackColor="#F1E5CE" />  
            <SortedDescendingHeaderStyle BackColor="#93451F" />  
            <Columns>  
                <asp:BoundField  DataField="FriendID" HeaderText="Friend ID"/>  
                <asp:BoundField  DataField="Name" HeaderText="Friend Name"/>  
                <asp:BoundField  DataField="Place" HeaderText="Place"/>  
                <asp:BoundField  DataField="Mobile" HeaderText="Mobile Number"/>  
                <asp:TemplateField HeaderText="Photo">  
                        <ItemTemplate>  
                            <asp:Image ID="imgPicture" runat="server" ImageUrl='<%# Eval("FriendImage", "~/FriendPhoto/{0}") %>' Width="200px" />  
                         </ItemTemplate>  
                </asp:TemplateField>  
                <asp:TemplateField HeaderText="View">  
                    <ItemTemplate>  
                        <asp:LinkButton ID="btnView" runat="server" Text="View" OnClick="btnView_Click" />  
                    </ItemTemplate>  
                </asp:TemplateField>  
                <asp:TemplateField HeaderText="Download">  
                    <ItemTemplate>  
                        <asp:Button ID="btnDownload" runat="server" Text="Download" OnClick="btnDownload_Click" />  
                    </ItemTemplate>  
                </asp:TemplateField>  
            </Columns>  
        </asp:GridView>  
      
    </div>  
    </form>  
</body>  
</html>  

 

using System;  
using System.Collections.Generic;  
using System.Configuration;  
using System.Data;  
using System.Data.SqlClient;  
using System.Linq;  
using System.Web;  
using System.Web.UI;  
using System.Web.UI.WebControls;  
  
public partial class FriendList : System.Web.UI.Page  
{  
    protected void Page_Load(object sender, EventArgs e)  
    {  
        if (!IsPostBack)  
        {  
            BindGridView();  
        }  
  
          
    }  
  
    private void BindGridView()  
    {  
        string constr = ConfigurationManager.ConnectionStrings["fileuploadConnectionString"].ConnectionString;  
        SqlConnection con = new SqlConnection(constr);  
        SqlDataAdapter da = new SqlDataAdapter("Select * From tblFileUpload", con);  
        DataSet ds = new DataSet();  
        da.Fill(ds, "Friend");  
        gvFriend.DataSource = ds;  
        gvFriend.DataBind();  
    }  
    
    protected void btnView_Click(object sender, EventArgs e)  
    {  
        LinkButton lnkbtn = sender as LinkButton;  
        GridViewRow gvrow = lnkbtn.NamingContainer as GridViewRow;  
        string filePath = "~//FriendPhoto//" + gvFriend.DataKeys[gvrow.RowIndex].Value.ToString();  
  
        Response.Write(String.Format("<script>window.open('{0}','_blank');</script>", "viewImage.aspx?fn=" + filePath));  
    }  
  
    protected void btnDownload_Click(object sender, EventArgs e)  
    {  
        Button btn = sender as Button;  
        GridViewRow gvrow = btn.NamingContainer as GridViewRow;  
        string filePath = "FriendPhoto\\"+gvFriend.DataKeys[gvrow.RowIndex].Value.ToString();  
        Response.ContentType = "image/jpg";  
        Response.AddHeader("Content-Disposition", "attachment;filename=\"" + filePath + "\"");  
        Response.TransmitFile(Server.MapPath(filePath));  
        Response.End();  
    }  
} 

کد  NewFriend.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="NewFriend.aspx.cs" Inherits="NewFriend" %>  
  
<!DOCTYPE html>  
  
<html xmlns="http://www.w3.org/1999/xhtml">  
<head runat="server">  
    <title></title>  
</head>  
<body>  
    <form id="form1" runat="server">  
    <div>  
        <h1>Friend Detail</h1>  
        <table>  
            <tr>  
                <td>  
                    Name  
                </td>  
                <td>  
                    <asp:TextBox ID="txtName" runat="server"></asp:TextBox>  
                </td>  
            </tr>  
            <tr>  
                <td>  
                    Place  
                </td>  
                <td>  
                    <asp:TextBox ID="txtPlace" runat="server"></asp:TextBox>  
                </td>  
            </tr>  
            <tr>  
                <td>  
                    Mobile  
                </td>  
                <td>  
                    <asp:TextBox ID="txtMobile" runat="server"></asp:TextBox>  
                </td>  
            </tr>  
            <tr>  
                <td>  
                    Photo/Image  
                </td>  
                <td>  
                    <asp:FileUpload ID="fuImage" runat="server" accept=".png,.PNG,.bmp,.BMP,.jpeg,.JPEG,.jpg,.JPG" ></asp:FileUpload>     
                </td>  
            </tr>  
            <tr>  
                <td>  
                    <asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClick="btnSubmit_Click" />  
                </td>  
                <td>  
                    <asp:Button ID="btnBack" runat="server" Text="Back" OnClick="btnBack_Click" PostBackUrl="~/FriendList.aspx" />  
                </td>  
            </tr>  
        </table>  
    </div>  
    </form>  
</body>  
</html>  

 

using System;  
using System.Collections.Generic;  
using System.Linq;  
using System.Web;  
using System.Web.UI;  
using System.Web.UI.WebControls;  
using System.Data;  
using System.Data.SqlClient;  
using System.Configuration;  
using System.IO;  
  
public partial class NewFriend : System.Web.UI.Page  
{  
    protected void Page_Load(object sender, EventArgs e)  
    {  
  
    }  
  
    protected void btnSubmit_Click(object sender, EventArgs e)  
    {  
        string filename = Path.GetFileName(fuImage.PostedFile.FileName);  
        string str = DateTime.Now.ToString("hhmmssffffff")+filename;  
        fuImage.SaveAs(Server.MapPath("FriendPhoto/"+str));  
  
        string constr = ConfigurationManager.ConnectionStrings["fileuploadConnectionString"].ConnectionString;  
        SqlConnection con = new SqlConnection(constr);  
        con.Open();  
        SqlCommand cmd = new SqlCommand("Insert into tblFileUpload (Name,Place,Mobile, FriendImage) Values(@Name,@Place,@Mobile,@FriendImage)", con);  
        cmd.Parameters.AddWithValue("@Name",txtName.Text);  
        cmd.Parameters.AddWithValue("@Place",txtPlace.Text);  
        cmd.Parameters.AddWithValue("@Mobile", txtMobile.Text);  
        cmd.Parameters.AddWithValue("@FriendImage", str);  
        cmd.ExecuteNonQuery();  
        cmd.Dispose();  
        con.Close();  
        Response.Redirect("~/FriendList.aspx");  
    }  
} 

کد ViewImage.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="viewImage.aspx.cs" Inherits="viewImage" %>  
  
<!DOCTYPE html>  
  
<html xmlns="http://www.w3.org/1999/xhtml">  
<head runat="server">  
    <title></title>  
</head>  
<body>  
    <form id="form1" runat="server">  
    <div>  
        <asp:Image ID="Image1" runat="server" Height="408px" Width="649px" />  
    </div>  
    </form>  
</body>  
</html> 

کد ViewImage.aspx.cs 

using System;  
using System.Collections.Generic;  
using System.Linq;  
using System.Net;  
using System.Web;  
using System.Web.UI;  
using System.Web.UI.WebControls;  
  
public partial class viewImage : System.Web.UI.Page  
{  
    protected void Page_Load(object sender, EventArgs e)  
    {  
        string FilePath = null;  
  
        FilePath = Request.QueryString["fn"];  
  
        if (FilePath != null)  
        {  
            string path = Server.MapPath(FilePath);  
            Image1.ImageUrl = FilePath;  
        }  
  
    }  
} 

خروجی :

 

فایل های ضمیمه
دانلود نسخه ی PDF این مطلب