در بسیاری مواقع ما نیاز به افزودن تصویر به پایگاه داده داریم. از آنجایی که دسترسی به فایلهای موجود در سرور جهت استفاده هکرها بسیار سهل الوصول است، برخی مواقع نمیتوانیم اطلاعات حساس را در قالب فایلهای تصویری در سرور ذخیره کنیم. به همین جهت بهتر آن است که در قالب نوع داده image در بانک اطلاعاتی ذخیره شود. در این قسمت موارد زیر بررسی می شوند: § بررسی پیش نیازهای اضافه نمودن فایل تصویری § کار با شیء Stream § پیدا کردن اندازه و نوع تصویری که آپلود می شود § چگونگی استفاده از متد InputStream بررسی پیش نیازهای اضافه نمودن فایل تصویری دو مورد اصلی که قبل از شروع آپلود نیاز داریم عبارتند از:
1. - تنظیم خاصیت enctype فرم مربوطه (در برچسبForm) به enctype="multipart/form-data" - داشتن <input type=file> که به کاربر اجازه انتخاب فایل مورد نظرش را می دهد. (فایلی که در پایگاه داده باید ذخیره شود) و یک Submit button جهت اجرای عملیات مربوط به آپلود کردن فای - استفاده از فضانام System.IO جهت سروکار داشتن با شیء Stream 2. سه پارامتر بالا در یک صفحه aspx بکار می روند.ما همچنین به پیش نیازهای زیر در SQL Server نیازمندیم: - داشتن حداقل یک جدول با فیلدی از نوع image - بهتر است که فیلد دیگری از نوع varchar جهت ذخیره تایپ تصویر داشته باشیم روند کار بدین صورت است که در ابتدا محتویات فایل تصویر خوانده میشود و سپس تصویر به جدول افزوده میشود. در زیر کد مربوط به رویداد OnClick مربوط به Submit button که تصویر را خوانده و به جدول SQL اضافه میکند، میپردازیم:
Public Sub AddPerson(sender As Object, e As EventArgs) Dim intImageSize As Int64 Dim strImageType As String Dim ImageStream As Stream
' Gets the Size of the Image intImageSize = PersonImage.PostedFile.ContentLength
' Gets the Image Type strImageType = PersonImage.PostedFile.ContentType
' Reads the Image ImageStream = PersonImage.PostedFile.InputStream
Dim ImageContent(intImageSize) As Byte Dim intStatus As Integer intStatus = ImageStream.Read(ImageContent, 0, intImageSize)
' Create Instance of Connection and Command Object Dim myConnection As New SqlConnection( ConfigurationSettings.AppSettings("ConnectionString")) Dim myCommand As New SqlCommand("sp_person_isp", myConnection)
' Mark the Command as a SPROC myCommand.CommandType = CommandType.StoredProcedure
' Add Parameters to SPROC Dim prmPersonImage As New SqlParameter("@PersonImage", SqlDbType.Image) prmPersonImage.Value = ImageContent myCommand.Parameters.Add(prmPersonImage)
Dim prmPersonImageType As New SqlParameter("@PersonImageType",SqlDbType.VarChar, 255) prmPersonImageType.Value = strImageType myCommand.Parameters.Add(prmPersonImageType)
Try myConnection.Open() myCommand.ExecuteNonQuery() myConnection.Close() Response.Write("New person successfully added!") Catch SQLexc As SqlException Response.Write("Insert Failed. Error Details are: " & SQLexc.ToString()) End Try End Sub شیء PersonImage نام کنترل HTMLInputFile است. در ابتدا ما نیاز داریم که اندازه تصویری که جهت اضافه کردن انتخاب شده را بدانیم که توسط کد زیر قابل اندازه گیری است:
intImageSize = PersonImage.PostedFile.ContentLength سپس نوع تصویر را با استفاده از خاصیت ContentType دریافت می کنیم. حال باید یک استریم از تصویر مربوطه دریافت شود:
ImageStream = PersonImage.PostedFile.InputStream در اینجا ما یک آرایه از بایتها بنام ImageContent که آماده نگهداری محتویات تصویر است، داریم. تصویر ورودی توسط متد Read از شیء Stream خوانده می شود. متد Read سه آرگومان می گیرد: 1. موقعیت مکانی که محتویات تصویر در آن باید کپی شود 2. مکان شروع جهت خواندن 3. تعداد بایتهایی که باید خوانده شود
و دستور مربوط به خواندن هم به شکل زیر است:
intStatus = ImageStream.Read(ImageContent, 0, intImageSize) حالا ما می خواهیم محتویات تصویر ورودی را که خوانده ایم به یک جدول SQL اضافه کنیم. به همین منظور از یک زیرروال ذخیره شده که تصویر و نوع آن را به یک جدول اضافه می کند، بهره می بریم. حالا ما می خواهیم محتویات تصویر ورودی را که خوانده ایم به یک جدول SQL اضافه کنیم. به همین منظور از یک زیرروال ذخیره شده که تصویر و نوع آن را به یک جدول اضافه می کند، بهره می بریم.
فایل aspx مربوطه:
<%@ Page Language="vb" %> <%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Data.SqlClient" %> <%@ Import Namespace="System.IO" %> <html> <head> <title>Inserting Image to a SqlServer</title> <script runat=server> Public Sub AddPerson(sender As Object, e As EventArgs) ' above code End Sub </script> </head>
<body>
<form enctype="multipart/form-data" runat="server"> <input type="file" id="PersonImage" runat=server /> <asp:Button Text="Add Person" OnClick="AddPerson" Runat=server /> </form>
</body> </html> جدول و زیرروال استفاده شده:
Drop Table Person Go
Create Table Person ( PersonID Int Identity, PersonEmail Varchar(255), PersonName Varchar(255), PersonSex Char(1), PersonDOB DateTime, PersonImage Image, PersonImageType Varchar(255) |+|
نظرات ()
تاریخ ثبت : جمعه 18 آذر 1384 ساعت : 03:12 ق.ظ
برسی کوکیها (Cookies) و جلسات (Sessions) در ASP.NET | ASP.net , | علی فیروزجنگ
برسی کوکیها (Cookies) و جلسات (Sessions) در ASP.NET | در این مقاله ابتدا به بررسی کوکیها (Cookies) پرداخته و سپس جلسات (Sessions) را بررسی خواهیم کرد. به دلیل نزدیکی بسیار زیاد این دو مفهوم تصمیم گرفتم همه آنها را در یک مقاله جمعآوری کنم. اگر مفاهیم فوق را به درستی درک کنید و طرز استفاده از آنها را یاد بگیرید، می توانید به قدرت برنامههای کاربردی وب خود بیفزایید. اما استفاده نابجا از این مفاهیم در وب سایتهای مختلف می تواند به شدت روی عملکرد سایت تاثیر گذاشته و از مخاطبان و کارایی آن بکاهد. در نتیجه با مطالعه این مقاله در مورد این دو مفهوم، باید بتوانید تصمیم بگیرید که کدامیک برای وب سایت شما مناسبتر می باشد. در هر حال مثالهایی را در این مقاله خواهید دید که به طور حتم به شما کمک زیادی خواهند کرد. لازم به ذکر است که بیشتر سعی در انتقال مفاهیمی کردهام که پایه کار نمی باشند و سعی کردم به بیان نکاتی بپردازم که راحت پیدا نمیشوند.
کوکیها (Cookies) استفان والتر اینگونه میگوید: "پروتکل HTTP هیچ امکانی را در اختیار وب سرور قرار نمیدهد تا بتواند به کمک آن تشخیص دهد درخواست جدید از همان مرورگری صادر شده که در خواست قبلی را فرستاده یا از مرورگر دیگری آمده است. از این جهت به HTTP صفت ناپایداری (Stateless) را میدهند. از نقطه نظر وب سرور هر درخواستی که برای دریافت یک صفحه صادر شده است از طرف کاربری جدید ارسال شده است." این به طور قطع آن چیزی نیست که ما می خواهیم! وقتی میخواهیم اطلاعات کاربر را در هر صفحه به او نشان بدهیم (از قبیل شناسه کاربری، کلمه عبور، سبد خرید و...) باید بتوانیم وضعیت آن را حفط کنیم یکی از راههای بسیار خوب در این زمینه استفاده از کوکیها میباشد.
اولین بار Netscape |
|