آپلود همزمان چند فایل و ذخیره در بانک اطلاعاتی Asp.Net
یکشنبه 23 آذر 1393در این مقاله با نحوه ارسال چند فایل به صورت همزمان و ذخیره آنها در بانک اطلاعاتی sql آشنا خواهید شد
ابتدا بانک اطلاعاتی با نام MultiUpload_DB ایجاد میکنیم
اسکریپت ساخت بانک اطلاعاتی :
USE [master] GO /****** Object: Database [MultiUpload_DB] Script Date: 12/14/2014 13:09:42 ******/ CREATE DATABASE [MultiUpload_DB] ON PRIMARY ( NAME = N'MultiUpload_DB', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\MultiUpload_DB.mdf' , SIZE = 2048KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ) LOG ON ( NAME = N'MultiUpload_DB_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\MultiUpload_DB_log.ldf' , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%) GO IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled')) begin EXEC [MultiUpload_DB].[dbo].[sp_fulltext_database] @action = 'enable' end GO ALTER DATABASE [MultiUpload_DB] SET ANSI_NULL_DEFAULT OFF GO ALTER DATABASE [MultiUpload_DB] SET ANSI_NULLS OFF GO ALTER DATABASE [MultiUpload_DB] SET ANSI_PADDING OFF GO ALTER DATABASE [MultiUpload_DB] SET ANSI_WARNINGS OFF GO ALTER DATABASE [MultiUpload_DB] SET ARITHABORT OFF GO ALTER DATABASE [MultiUpload_DB] SET AUTO_CLOSE OFF GO ALTER DATABASE [MultiUpload_DB] SET AUTO_CREATE_STATISTICS ON GO ALTER DATABASE [MultiUpload_DB] SET AUTO_SHRINK OFF GO ALTER DATABASE [MultiUpload_DB] SET AUTO_UPDATE_STATISTICS ON GO ALTER DATABASE [MultiUpload_DB] SET CURSOR_CLOSE_ON_COMMIT OFF GO ALTER DATABASE [MultiUpload_DB] SET CURSOR_DEFAULT GLOBAL GO ALTER DATABASE [MultiUpload_DB] SET CONCAT_NULL_YIELDS_NULL OFF GO ALTER DATABASE [MultiUpload_DB] SET NUMERIC_ROUNDABORT OFF GO ALTER DATABASE [MultiUpload_DB] SET QUOTED_IDENTIFIER OFF GO ALTER DATABASE [MultiUpload_DB] SET RECURSIVE_TRIGGERS OFF GO ALTER DATABASE [MultiUpload_DB] SET DISABLE_BROKER GO ALTER DATABASE [MultiUpload_DB] SET AUTO_UPDATE_STATISTICS_ASYNC OFF GO ALTER DATABASE [MultiUpload_DB] SET DATE_CORRELATION_OPTIMIZATION OFF GO ALTER DATABASE [MultiUpload_DB] SET TRUSTWORTHY OFF GO ALTER DATABASE [MultiUpload_DB] SET ALLOW_SNAPSHOT_ISOLATION OFF GO ALTER DATABASE [MultiUpload_DB] SET PARAMETERIZATION SIMPLE GO ALTER DATABASE [MultiUpload_DB] SET READ_COMMITTED_SNAPSHOT OFF GO ALTER DATABASE [MultiUpload_DB] SET READ_WRITE GO ALTER DATABASE [MultiUpload_DB] SET RECOVERY FULL GO ALTER DATABASE [MultiUpload_DB] SET MULTI_USER GO ALTER DATABASE [MultiUpload_DB] SET PAGE_VERIFY CHECKSUM GO ALTER DATABASE [MultiUpload_DB] SET DB_CHAINING OFF GO EXEC sys.sp_db_vardecimal_storage_format N'MultiUpload_DB', N'ON' GO USE [MultiUpload_DB] GO /****** Object: Table [dbo].[tblFiles] Script Date: 12/14/2014 13:09:43 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[tblFiles]( [id] [int] IDENTITY(1,1) NOT NULL, [Name] [varchar](50) NOT NULL, [ContentType] [nvarchar](200) NOT NULL, [Data] [varbinary](max) NOT NULL, CONSTRAINT [PK_tblFiles] PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO
سپس یک FileUpload و یک GridView روی صفحه قرار میدیم
<div> <h3>مرجع تخصصی برنامه نویسان</h3> <asp:FileUpload ID="FileUpload1" runat="server" AllowMultiple="true" /> <asp:Button ID="btnUpload" runat="server" Text="Upload" OnClick="btnUpload_Click" /> <hr /> <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false"> <Columns> <asp:BoundField DataField="Name" HeaderText="File Name" /> </Columns> </asp:GridView> <hr/> <a href="http://barnamenevisan.org/">www.Barnamenevisan.Org</a> </div>
و خاصیت AllowMultiple را برابر True قرار میدهیم
دقت داشته باشید این خاصیت فقط در ASP.Net.Net 4.5 وجود دارد
سپس فضاهای نام را اضافه میکنیم
using System.IO; using System.Data; using System.Data.SqlClient; using System.Configuration;
و کدهای کلید Upload
foreach (HttpPostedFile postedFile in FileUpload1.PostedFiles) { string filename = Path.GetFileName(postedFile.FileName); string contentType = postedFile.ContentType; using (Stream fs = postedFile.InputStream) { using (BinaryReader br = new BinaryReader(fs)) { byte[] bytes = br.ReadBytes((Int32)fs.Length); string constr = ConfigurationManager.ConnectionStrings["constr"].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", filename); cmd.Parameters.AddWithValue("@ContentType", contentType); cmd.Parameters.AddWithValue("@Data", bytes); con.Open(); cmd.ExecuteNonQuery(); con.Close(); } } } } }
و در لود صفحه گرید را از بانک پر میکنیم
string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString; using (SqlConnection con = new SqlConnection(constr)) { using (SqlCommand cmd = new SqlCommand()) { cmd.CommandText = "SELECT Id, Name FROM tblFiles"; cmd.Connection = con; con.Open(); GridView1.DataSource = cmd.ExecuteReader(); GridView1.DataBind(); con.Close(); } }
نمونه هم ضمیمه کردم
موفق باشید
- ASP.net
- 3k بازدید
- 12 تشکر