مشکل:عدم نمایش تصاویر در گریدویو

fereshte22

Member
سلام

من برای ذخیره و بازیابی تصاویر در دیتابیس لز روش زیر استفاده کردم ولی فیلد image در گرید ویو خالی است و تصویری نمایش داده نمیشود.من روش کار و نیز فایل برنامه در در اینجا قرار دادم اگر دوستان محبت کنند اون را چک کنند ممنون میشوم.خواهش میکنم حتما برنامه را هم چک کنند.البته یکی از دوستان خیلی فعال در زمینه برنامه نویسی به من گفته که برنامه مشکلی ندارد ولی نمیدونم چرا من که اجرا میکنم تصویری نمایش داده نمیشود.

من از کد زیر برای ذخیره تصویر استفاده کردم

کد:
Dim id As Integer

id = textbox1.text

' Create a byte[] from the input file

Dim len As Integer = FileUpload1.PostedFile.ContentLength

Dim pic() As Byte = New Byte(len) {}

FileUpload1.PostedFile.InputStream.Read(pic, 0, len)

' Insert the image and comment into the database

Dim connection As New SqlConnection(ConfigurationManager.ConnectionStrings("ssgshopConnectionString").ConnectionString)

Try

connection.Open()

Dim cmd As SqlCommand

cmd = New SqlCommand("insert into tablighat " + "(Picture, Commen,PicId) values (@pic, @text,@picId)", connection)



cmd.Parameters.Add("@pic", pic)

cmd.Parameters.Add("@text", "Your Comment")tttt

cmd.Parameters.Add("@picId", id)

cmd.ExecuteNonQuery()

Finally

connection.Close()

End Try

برای بازیابی تصویر نیز از کد زیر استفاده کردم(در صفحه retriveimage.aspx)


کد:
کد:
Dim id As String

id = Request.QueryString("id")

Dim stream As MemoryStream = New MemoryStream()

Dim connection As New SqlConnection(ConfigurationManager.ConnectionStrings("ssgshopConnectionString").ConnectionString)

Try

connection.Open()

Dim command As SqlCommand



command = New SqlCommand("select Picture from tablighat where picid=" + id, connection)

Dim image() As Byte = CType(Command.ExecuteScalar(), Byte())

stream.Write(image, 0, image.Length)

Dim bitmap As bitmap = New Bitmap(stream)

Response.ContentType = "image/jpeg"

bitmap.Save(Response.OutputStream, ImageFormat.Jpeg)

Finally

connection.Close()

stream.Close()

End Try
بعد در یک usercontrol از کد زیر استفاده کردم

کد:
کد:
Dim _id As String


Public Property AdvertisId() As String

Get

Return Me._id

End Get

Set(ByVal value As String)

Me._id = value

Call FillInfo()

End Set

End Property

Public Sub FillInfo()

Image1.ImageUrl = "~/retriveimage.aspx?id=" + (Me._id)

End Sub
ودر صفحه ای دیگر برای نمایش تصاویر یک گریدویو قرار دادم وگرید ویو را با usercontrol پر کردم.


کد:
کد:
<asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1">

<Columns>

<asp:TemplateField>

<ItemTemplate>

<uc1:tablighat ID="Tablighat1" runat="server" advertisID='<%# Eval("picid") %>' />

</ItemTemplate>

</asp:TemplateField>

</Columns>

</asp:GridView>
 

پیوست ها

  • tablighat.rar
    5.8 کیلوبایت · بازدیدها: 37

amirlol

Well-Known Member
ببخشید ! منظور از نمایش دادن ! اینه که اصلآ قسمت عکس رو لود نمی کنه یا عکس لود میشه ولی بالا نمی یاد و حالت ضرب در است !
 

fereshte22

Member
سلام
عکس حالت ضرب در است.
اگر لطف کنید و خود برنامه را هم نگاه کنید خیلی ممنون میشوم.چون خیلی روی این قسمت گیر کردهام و حسابی کلافه شدهام.
 

amirlol

Well-Known Member
ظاهر کد بدون مشکله ! یه زحمتی بکشید ! رو عکس پراپرتیز بگیرید ببینید داره چه آدرسی رو می خونه برای عکس
 

fereshte22

Member
سلام
ادرس برای عکس با picid=1 به صورت زیر است
http://localhost:1045/tablighat/retriveimage.aspx?id=1
برای بقیه عکس ها نیز بسته به مقدار picid مقدار id فرق میکند.
جسارتا میتونم بپرسم که ایا شما برنامه را اجرا کردید و یا نه؟
چون یکی از دوستان دیگر هم به من گفته که برنامه مشکلی ندارد .
خلاصه خیلی کلافه شدهام .ممنون میشوم مشکلم را حل کنید.
 

TNZ187

Member
سلام

برنامه شما تا اون جا که من اجرا کردم مشکل نداره .:d:d:d
 

fereshte22

Member
سلام
یعنی تصاویر را نشون داد؟
پس چرا من که اجرا میکنم نشون نمیدهد و حالت ضرب در است؟؟؟؟؟؟؟؟؟؟؟؟
من روی دو تا سیستم هم برنامه را اجرا کرده ام.یعنی تصاویر در دیتابیس مشکل دارند؟
 

amirhkh

Member
با سلام

تا اونجایی که بنده می دونم ذخیره کردن Object تو دیتا بیس اصلا جالب نیست

حجم پایگاه داده خیلی بالا می ره و همچنین خواندن و نوشتن اطلاعات هم وقت بیشتری می گیره
 

fereshte22

Member
دوست عزیز Tnz187 ایا تصاویر نشون داده شد یا حالت ضرب در داشت؟
راستش من که دیگه خیلی کلافه شدهام .از دوستان عاجزانه درخواست میکنم من را کمک کنند.
 

fereshte22

Member
سلام
دوست عزیز Tnz187 از راهنمایی شما خیلی ممنون هستم.
من دیتابیس را که نگاه کردم تصاویر به صورت باینری ذخیره شده بود.حالا نمیدونم مشکلی وجود دارد و یا نه؟
 

amirlol

Well-Known Member
یه سوال ! ببینم حالا چرا تصاویر رو تو دیتابیس داری ذخیره می کنی !!

بیارش تو یه فلدر و فقط اسمش رو بریز اون تو
 

amirhkh

Member
والا ما هم همین رو گفتیم

من نمی دونم چرا تو این بخش الکی بحث ها چند صفحه میشه

در صورتی که اکثر مسائل واضح هستند
 

fereshte22

Member
یه سوال ! ببینم حالا چرا تصاویر رو تو دیتابیس داری ذخیره می کنی !!

بیارش تو یه فلدر و فقط اسمش رو بریز اون تو

سلام
و ممنون از پیگیری شما وبقیه دوستان عزیز

من با ذخیره تصویر به این صورت هم مشکلی ندارم ولی کلا میخواهم به این صورت بتونم کار کنم که وقتی یه تصویر را اپلود میکنیم خصوصیاتی شامل پهنا و ارتفاع ان را نیز مشخص کنیم(مثلا در دیتابیس ذخیره کنیم)و وقتی تصویر نمایش داده میشود براساس این اندازه ها تنظیم شود.در روش ذخیره عکس در دیتابیس تصاویر در دیتابیس به صورت باینری ذخیره میشوند .حالا در بازیابی دوباره به image تبدیلی شده و همونجا میتوان با متد تغییر سایز تصویر اندازه اش را تغییر داد.حالا اگه تصاویر را در یک فولدر ذخیره کنیم من درست نمیدونم برای این کار باید به چه صورت عمل کنم؟میشه من را راهنمایی کنید؟
راستی تونستید برنامه را اجرا کنید؟
 

amirlol

Well-Known Member
سلام ! ببینید عکس رو هر طوری که می خواهین بازیابی کنید فرقی نداره که بخوهاین متد Hight و wight اشو بدست بیارین !!

فکر کنم روش ذخیره در فلدر به چند دلیل هم بهتره !

1) سنگین نشدن حجم دیتابیس !
2) دسترسی سریع به عکس ها !
3) وابسته نبودن به دیتابیس !


و میشه گفت تنها ایرادی که هست اینه که شما وقتی از دیتابیس بک آپ (backup) میگیرین ! عکس رو با خود ندارین و باید فلدر عکس ها رو هم جادا گانه کپی برداری کنید

نه ! امرووز به امید خدا رو اون یکی سیستم او تستش می کنم ! البته اگه مشکلی اون داشته باشه

شاد باشید !
 

fereshte22

Member
سلام
خوب من تصاویر را در یک فولدر به صورت زیر ذخیره کردم
کد:
Private Const IMAGEFOLDER As String = "~/Images/"
    Private _strTableKeyValue As String
    Protected Sub btnSubmit_Folder_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSubmit_Folder.Click
        Dim thistime As DateTime
        thistime = DateTime.Now
        Dim year, month, day, hourse, min, sec, filename, picext, name, strpath As String

        year = thistime.Year.ToString()
        month = thistime.Month.ToString()
        day = thistime.Day.ToString()
        hourse = thistime.Hour.ToString()
        min = thistime.Minute.ToString()
        sec = thistime.Second.ToString()

        filename = f_FileUpload_Folder.PostedFile.FileName
        picext = System.IO.Path.GetExtension(filename)
        name = year + month + day + hourse + min + sec + picext
        strpath = Request.MapPath(Request.ApplicationPath)
        strpath += "\\images\\" + name
        f_FileUpload_Folder.PostedFile.SaveAs(strpath)
        
        Label1.Text = name
       
    End Sub
و برای بازیابی اون هم در یک ستون از نوع templatefield در گرید ویو به صورت زیر عمل کردم.

کد:
 <td style="vertical-align: middle; width: 130px; height: 130px; text-align: center">
          <img src=".\Images\<%#Eval("namepicture1")%>"></td>
حالا سوال من در مورد همان مشخص نمودن اندازه تصویر است.میشه من را راهنمایی کنید که چه طوری باید اندازه تصویر را مشخص کنم ؟
در صفحه بازیابی باید این کار را انجام دهم؟
با یه نمونه کد اگر توضیح دهید که چطوری باید اندازه تصویر را مشخص کنیم ممنون میشوم.
تورو خدا راهنمایی کنید که من هم دست از سر شما بردارم.:
 

جدیدترین ارسال ها

بالا