نمایش نتایج 1 تا 14 از 14

نام تاپیک: مشکل: عدم نمایش تصاویر ذخیره شده در دیتابیس

  1. #1

    مشکل: عدم نمایش تصاویر ذخیره شده در دیتابیس

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

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


    Dim id AsInteger
    id = textbox1.text
    ' Create a byte[] from the input file
    Dim len AsInteger = FileUpload1.PostedFile.ContentLength
    Dim pic() AsByte = NewByte(len) {}
    FileUpload1.PostedFile.InputStream.Read(pic, 0, len)
    ' Insert the image and comment into the database
    Dim connection AsNew SqlConnection(ConfigurationManager.ConnectionStrin gs("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")
    cmd.Parameters.Add("@picId", id)
    cmd.ExecuteNonQuery()
    Finally
    connection.Close()
    EndTry


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

    PrivateSub Page_Load(ByVal sender AsObject, ByVal e As System.EventArgs)
    ' Put user code to initialize the page here
    Dim id AsString
    id = Request.QueryString("id")
    Dim stream As MemoryStream = New MemoryStream()
    Dim connection AsNew SqlConnection(ConfigurationManager.ConnectionStrin gs("ssgshopConnectionString").ConnectionString)
    Try
    connection.Open()
    Dim command As SqlCommand

    command = New SqlCommand("select Picture from tablighat where picid=" + 1, connection)
    Dim image() AsByte = 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()
    EndTry

    EndSub


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

    Inherits System.Web.UI.UserControl
    Dim _id AsString
    PublicProperty AdvertisId() AsString
    Get
    ReturnMe._id
    EndGet
    Set(ByVal value AsString)
    Me._id = value
    Call FillInfo()
    EndSet
    EndProperty
    PublicSub FillInfo()
    Image1.ImageUrl = "D:/Documents and Settings/fereshte/My Documents/Visual Studio 2005/shop/reteriveimage.aspx?id=" + (Me._id)
    EndSub

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


    <asp:GridViewID="GridView1"runat="server"AutoGenerateColumns="False"DataSourceID="SqlDataSource1">
    <Columns>
    <asp:TemplateField>
    <ItemTemplate>
    <uc1:tablighatID="Tablighat1"runat="server"advertisID="<% Eval('picid') %>"/>
    </ItemTemplate>
    </asp:TemplateField>
    </Columns>
    </asp:GridView>

    خواهش میکنم دوستان یه نگاهی به این کد بندازند و به من کمک کنند که بدونم مشکل کار چیه؟
    چرا هیچ تصویری نمایش داده نمیشود.؟
    در ضمن اگر دوستان پیشنهادی در مورد تنظیم تبلیغات در سایت دارند ممنون میشوم راهنمایی کنند.

  2. #2
    به جای این کد
    Image1.ImageUrl = "D:/Documents and Settings/fereshte/My Documents/Visual Studio 2005/shop/reteriveimage.aspx?id=" + (Me._id)

    از این استفاده کنید:

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

  3. #3
    عذر میخواهم ولی بازهم چیزی نمایش داده نمیشود.اگه لطف کنید در همین مورد و همچنین مشکلات دیگری(قابل تنظیم بودن و...) که در بالا بیان کردم کمک کنید خیلی ممنون میشوم

  4. #4
    نقل قول نوشته شده توسط fereshte22 مشاهده تاپیک
    عذر میخواهم ولی بازهم چیزی نمایش داده نمیشود.اگه لطف کنید در همین مورد و همچنین مشکلات دیگری(قابل تنظیم بودن و...) که در بالا بیان کردم کمک کنید خیلی ممنون میشوم
    در UserControl به جای استفاده از رویداد Load برای انجام کد زیر

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


    از رویدادهای DataBinding یا PreRender استفاده کنید.

    در ضمن در خط 11 کد بازیابی تصویر یه دونه 1 هست اون رو هم تصحیح کن- تا تصویر صحیح انتخاب بشه.
    command = New SqlCommand("select Picture from tablighat where picid=" + 1, connection)

    این قسمت رو هم :
    advertisID="<% Eval('picid') %>"

    اینطوری بنویس:
    advertisID='<%# Eval("picid") %>'
    '

  5. #5
    سلام
    میشه لطف کنید و در این مورد میشه توضیح دهید
    در UserControl به جای استفاده از رویداد Load برای انجام کد زیر

    کد:
    Image1.ImageUrl = "~/shop/reteriveimage.aspx?id=" + (Me._id)
    از رویدادهای DataBinding یا PreRender استفاده کنید.
    در ضمن من فایل برنامه را قرار دادم اگه نگاهی به اون بندازید خیلی ممنون میشوم.
    فایل های ضمیمه فایل های ضمیمه

  6. #6
    این که کار میکنه !

    فقط این

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

    رو به این

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

    تبدیل کردم کار کرد!

    احتمالا از اولش هم مشکل تایپی بوده!

  7. #7
    سلامراستش خیلی تعجب میکنم چرا من که اجرا میکنم در گرید ویو کنترل image خالی است.؟!!!!!!در ضمن همون طور که قبلا هم گفتم من میخواهم تعداد کلیک روی تصویر را داشته باشم و اون را update کنم .در ضمن وقتی تصاویر را اضافه میکنم ارتفاع و پهنای اون را مشخص کنم و بر اساس این اندازه تصاویر را اضافه کنم.میشه در این مورد هم من را راهنمایی کنید.(با توجه به روند کار)

  8. #8
    این که چرا نشون نمیده !!؟ چک کن ببین اشتباه تایپی چیزی نداشته باشی چون به طور کلی کدی که گذاشتی سالمه.

    برای ثبت کلیکها هم به جای Image از ImageButton استفاده کن قابلیت کلیک داره! بعد با خاصیتهای CommandName و CommandArgument و رویداد RowCommand مربوط به گریدویو کلیک ها رو کنترل کن و هر جا خواستی ثبت کن.(جستجو کن مثالش هست)

    برای اندازه هم همون طور که ID رو پاس میدی Hight و Width رو هم پاس بده بعد همون جایی که می خوای عکس رو به Response اضافه کنی با متد GetThumbnaleImage مربوط به کلاس Bitmap اندازش رو تغییر بده.

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

    <asp:ImageButtonID="ImageButton1"runat="server"CommandName="button"CommandArgument='<%#EVAL("picid") %>'/>

    وکد زیر را استفاده کنم.

    ProtectedSub GridView1_RowCommand(ByVal sender AsObject, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs ) Handles GridView1.RowCommand
    If e.CommandName = "button"Then
    'some code
    EndIf
    EndSub

    ولی من چیزی در این مورد که بعد از تشخیص کلیک تعداد ان را برای هر سطر چگونه شمارش و ثبت کنم پیدا نکردم.
    در مورد کلیک بر روی تصویر و لینک به سایت دیگر ایا درسته که به این صورت عمل کنیم.
    در روال rowcommand از کد زیر استفاده کنیم

    Response.Redirect(ur)

    حالا با توجه به اینکه ادرس لینک برای هر تصویر در دیتابیس ذخیره شده این مقدار را استخراج کنیم و به جای مقدار ur قرار دهیم؟و یا روش دیگری وجود دارد؟
    ممنون میشوم که راهنمایی کنید

  10. #10
    برنامه شما رو تست کردم و جواب داد!

    برای کلیک هم همین که نوشتید درسته ، کافیه توی RowCommand بوسیله e.CommandArgument مقدار id رو که پاس دادید بگیرید و در دیتابیس مثلا مقدار یک فیلد رو یک واحد افزایش بدید.

    برای آدرس این کار که گفتید رو هم میشه کرد ولی میتونید همون موقع که دارید عکس ر اود می کنید آدرس رو هم با یک پارامتر دیگه پاس بدید تا دیگه نخواد دوباره موقع کلیک دیتابیس رو بخونید.

  11. #11
    سلام
    با راهنمایهای شما مشکل تعداد کلیک و لینک حل شد.الان مشکل بعدیه من در ارتباط با سایز عکس است.من با توجه به مطالب موجود در سایت از کد زیر برای تنظیم اندازه عکس استفاده کردم.
    البته کد سی شارپ به صورت زیر بود.(صفحه MakeThumbnail.aspx)

    protectedvoid Page_Load(object sender, System.EventArgs e)
    {
    // get the file name -- fall800.jpg
    string file = Request.QueryString["file"];
    // create an image object, using the filename we just retrieved
    System.Drawing.Image image = System.Drawing.Image.FromFile(Server.MapPath(file));
    // create the actual thumbnail image
    System.Drawing.Image thumbnailImage = image.GetThumbnailImage(100, 64, new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback), IntPtr.Zero);

    // make a memory stream to work with the image bytes
    MemoryStream imageStream = newMemoryStream();
    // put the image into the memory stream
    thumbnailImage.Save(imageStream, System.Drawing.Imaging.ImageFormat.Jpeg);
    // make byte array the same size as the image
    byte[] imageContent = newByte[imageStream.Length];
    // rewind the memory stream
    imageStream.Position = 0;
    // load the byte array with the image
    imageStream.Read(imageContent, 0, (int)imageStream.Length);
    // return byte array to caller with image type
    Response.ContentType = "image/jpeg";
    Response.BinaryWrite(imageContent);
    }
    ///<summary>
    /// Required, but not used
    ///</summary>
    ///<returns>true</returns>
    publicbool ThumbnailCallback()
    {
    returntrue;
    }

    که اون را به vb تبدیل کردم

    ProtectedSub Page_Load(ByVal sender AsObject, ByVal e As System.EventArgs)
    ' get the file name -- fall800.jpg
    Dim file AsString = Request.QueryString("file")
    ' create an image object, using the filename we just retrieved
    Dim image As System.Drawing.Image = System.Drawing.Image.FromFile(Server.MapPath(file) )
    ' create the actual thumbnail image
    Dim thumbnailImage As System.Drawing.Image = image.GetThumbnailImage(64, 64, New System.Drawing.Image.GetThumbnailImageAbort(AddressOf ThumbnailCallback), IntPtr.Zero)
    ' make a memory stream to work with the image bytes
    Dim imageStream As MemoryStream = New MemoryStream()
    ' put the image into the memory stream
    thumbnailImage.Save(imageStream, System.Drawing.Imaging.ImageFormat.Jpeg)
    ' make byte array the same size as the image
    Dim imageContent() AsByte = NewByte(imageStream.Length) {}
    ' rewind the memory stream
    imageStream.Position = 0
    ' load the byte array with the image
    imageStream.Read(imageContent, 0, CType(imageStream.Length, Integer))
    ' return byte array to caller with image type
    Response.ContentType = "image/jpeg"
    Response.BinaryWrite(imageContent)
    EndSub
    PublicFunction ThumbnailCallback() AsBoolean
    ReturnTrue
    EndFunction

    ودر صفحه Thumbnail.aspx کد زیر برای نمایش تصویر استفاده شده:

    <asp:Imageid="Image1"runat="server"ImageUrl="MakeThumbnail.aspx?file=pic.jpg"/>

    حالا مشکلی دارم اینه که کد سی شارپ کار میکند(البته نمیدونم چرا بعضی مواقع خطا میگیرد و اجرا نمیشود.)ولی کد vb خطا نمیگیرد ولی تصویری هم نمایش نمیدهد.
    در ضمن مشکل دیگرم اینه که این کد را چطور استفاده کنم؟
    البته شما در پستهای قبلی در این مورد توضیح دادید ولی نمیدونم دقیقا کدها را به چه صورت استفاده کنم و با کدهای صفحه retriveimage.aspx ترکیب کنم ؟

  12. #12
    نقل قول نوشته شده توسط fereshte22 مشاهده تاپیک
    سلام
    با راهنمایهای شما مشکل تعداد کلیک و لینک حل شد.الان مشکل بعدیه من در ارتباط با سایز عکس است.من با توجه به مطالب موجود در سایت از کد زیر برای تنظیم اندازه عکس استفاده کردم.
    البته کد سی شارپ به صورت زیر بود.(صفحه MakeThumbnail.aspx)

    protectedvoid Page_Load(object sender, System.EventArgs e)
    {
    // get the file name -- fall800.jpg
    string file = Request.QueryString["file"];
    // create an image object, using the filename we just retrieved
    System.Drawing.Image image = System.Drawing.Image.FromFile(Server.MapPath(file));
    // create the actual thumbnail image
    System.Drawing.Image thumbnailImage = image.GetThumbnailImage(100, 64, new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback), IntPtr.Zero);

    // make a memory stream to work with the image bytes
    MemoryStream imageStream = newMemoryStream();
    // put the image into the memory stream
    thumbnailImage.Save(imageStream, System.Drawing.Imaging.ImageFormat.Jpeg);
    // make byte array the same size as the image
    byte[] imageContent = newByte[imageStream.Length];
    // rewind the memory stream
    imageStream.Position = 0;
    // load the byte array with the image
    imageStream.Read(imageContent, 0, (int)imageStream.Length);
    // return byte array to caller with image type
    Response.ContentType = "image/jpeg";
    Response.BinaryWrite(imageContent);
    }
    ///<summary>
    /// Required, but not used
    ///</summary>
    ///<returns>true</returns>
    publicbool ThumbnailCallback()
    {
    returntrue;
    }

    که اون را به vb تبدیل کردم

    ProtectedSub Page_Load(ByVal sender AsObject, ByVal e As System.EventArgs)
    ' get the file name -- fall800.jpg
    Dim file AsString = Request.QueryString("file")
    ' create an image object, using the filename we just retrieved
    Dim image As System.Drawing.Image = System.Drawing.Image.FromFile(Server.MapPath(file) )
    ' create the actual thumbnail image
    Dim thumbnailImage As System.Drawing.Image = image.GetThumbnailImage(64, 64, New System.Drawing.Image.GetThumbnailImageAbort(AddressOf ThumbnailCallback), IntPtr.Zero)
    ' make a memory stream to work with the image bytes
    Dim imageStream As MemoryStream = New MemoryStream()
    ' put the image into the memory stream
    thumbnailImage.Save(imageStream, System.Drawing.Imaging.ImageFormat.Jpeg)
    ' make byte array the same size as the image
    Dim imageContent() AsByte = NewByte(imageStream.Length) {}
    ' rewind the memory stream
    imageStream.Position = 0
    ' load the byte array with the image
    imageStream.Read(imageContent, 0, CType(imageStream.Length, Integer))
    ' return byte array to caller with image type
    Response.ContentType = "image/jpeg"
    Response.BinaryWrite(imageContent)
    EndSub
    PublicFunction ThumbnailCallback() AsBoolean
    ReturnTrue
    EndFunction

    ودر صفحه Thumbnail.aspx کد زیر برای نمایش تصویر استفاده شده:

    <asp:Imageid="Image1"runat="server"ImageUrl="MakeThumbnail.aspx?file=pic.jpg"/>

    حالا مشکلی دارم اینه که کد سی شارپ کار میکند(البته نمیدونم چرا بعضی مواقع خطا میگیرد و اجرا نمیشود.)ولی کد vb خطا نمیگیرد ولی تصویری هم نمایش نمیدهد.
    در ضمن مشکل دیگرم اینه که این کد را چطور استفاده کنم؟
    البته شما در پستهای قبلی در این مورد توضیح دادید ولی نمیدونم دقیقا کدها را به چه صورت استفاده کنم و با کدهای صفحه retriveimage.aspx ترکیب کنم ؟
    اصلا لازم نبود یک صفحه جدید ایجاد کنید ، اگر صرفا می خواهید تصویر را کوچک کنید داخل همون کد قبلی یک خط اضافه کنید که با متد GetThumbnaleImage تصویر رو کوچیک کنه ، طول و عرض رو هم یا استاتیک تعریف کنید یا مثل همون ID تصویر با تعریف Properties از طریق QuerString ارسال کنید.

    همون کد قبلی رو اصلاح کنید بهتره.

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

  14. #14

    نقل قول: مشکل: عدم نمایش تصاویر ذخیره شده در دیتابیس

    پروژه شما کار میکنه. البته کمی هم تغییر دادم! در مورد سایز عکس هم باید وجود و سایز مناسب رو هنگام ثبت اطلاعات تبلیغ چک کنید و بعد در دیتا بیس ذخیره کنید.
    فایل های ضمیمه فایل های ضمیمه

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •