PDA

View Full Version : قراردادن عکسهای متفاوت در یک ستون از گرید



Leyla2011
چهارشنبه 06 اردیبهشت 1391, 17:00 عصر
سلام خدمت اساتید
چطوری میشه که عکس رو درون گرید ویو نمایش داد
مثلا نام کالایی رو درون گرید درج میکنیم و میخواهیم که عکس اون کالا هم کنارش درج بشه

unix2010
چهارشنبه 06 اردیبهشت 1391, 21:12 عصر
برای این کار بهتر که آدرس عکس کالاها رو در دیتا بیس ذخیره کنی این هم چند تا لینک امیدوارم به کارتون بیاد
http://www.codeproject.com/Articles/20782/Displaying-Images-from-a-Database-in-a-GridView
http://stackoverflow.com/questions/5914145/how-to-show-image-in-gridview

* joodi *
چهارشنبه 06 اردیبهشت 1391, 21:15 عصر
ذخیره خود عکس در بانک هم روش خوبیه

d_derakhshani
چهارشنبه 06 اردیبهشت 1391, 21:37 عصر
ذخیره خود عکس در بانک هم روش خوبیه
بهتره این کار رو نکنید.

s_m_f_a
چهارشنبه 06 اردیبهشت 1391, 21:56 عصر
بهترین کار ذخیره آدرس عکس در بانک اطلاعاتی و ارتباط دادن به دیتا گرید هستش بعد توی grid view یک image قرار بده و به بانک وصل کن تا اطلاعات رو از بانک بخونه ذخیره کردن خود عکس توی بانک باعث سنگینی بانک میشه

d_derakhshani
چهارشنبه 06 اردیبهشت 1391, 22:38 عصر
تو سایت جستجو کنید. زیاد تاپیک پیدا می کنید که مشکل تون رو حل کنه. این چند نمونه.سایر موارد با شما.
http://barnamenevis.org/showthread.php?30138 (http://barnamenevis.org/showthread.php?301387-%D9%85%D8%B4%DA%A9%D9%84-%D8%B9%D8%AF%D9%85-%D9%86%D9%85%D8%A7%DB%8C%D8%B4-%D8%AA%D8%B5%D8%A7%D9%88%DB%8C%D8%B1-%D8%AF%D8%B1-%DA%A9%D8%A7%D8%AA%D8%A7%D9%84%D9%88%DA%AF-%D9%81%D8%B1%D9%88%D8%B4%DA%AF%D8%A7%D9%87&highlight=%D8%AA%D8%B5%D9%88%DB%8C%D8%B1+gridview)
http://barnamenevis.org/showthread.php?233194-%D8%= (http://barnamenevis.org/showthread.php?233194-%D8%B9%D8%AF%D9%88-%D9%86%D9%85%D8%A7%D9%8A%D8%B4-%D8%B9%D9%83%D8%B3-%D8%AF%D8%B1-%DA%AF%D8%B1%D9%8A%D8%AF-%D9%88%D9%8A%D9%88&highlight=%D8%AA%D8%B5%D9%88%DB%8C%D8%B1+gridview)

* joodi *
پنج شنبه 07 اردیبهشت 1391, 08:43 صبح
با سلام
اگر عكس ها از نظر امنيتي چندان براي شما ارزشمند نباشند حرف شما صحيح است در غير اينصورت به نظر من بهتره در بانك ذخيره بشن.

d_derakhshani
پنج شنبه 07 اردیبهشت 1391, 10:09 صبح
معمولا در وب سایتها عکس ها انقدر مورد امنیتی ندارند. دوم اینکه اگه هم امنیت شون مهم باشه باز هم میشه رو فایل سیستم قرار داد. روی دیتابیس علاوه بر اینکه حجم دیتابیس رو زیاد میکنه(که نکته مهمی نیست) باعث کند شدن بار گذاری اونها از دیتابیس میشه( همچنین کار با فایل های روی دیتابیس هم سخت تره. البته این نکته حساسی نیست). دوم اینکه اگه هم دیتابیس رو خوب طراحی نکنید(وقتی فیلد عکس دارید طراحی فرق داره)موجب کند شدن کوئری میشه. اگه هم درست طراحی کنید باز هم کاهش کارائی دارید(کمی کمتر).
روش جلوگیری کلاینت ها برای دسترسی به فایل و حل مشکل امنیتی:
تگ های زیر رو تو web.config اضافه کنید(فولدری به نام secure_images هم ایجاد کنید)

<location path="secure_images">
<system.web>
<authorization>
<deny users="*"/>
</authorization>
</system.web>
</location>

خوب حالا یک فایل به نام Imagehandler.ashx اضافه کنید و کدهای زیر رو توش بنویسید:

<%@ WebHandler Language="C#‎‎" Class="Imagehandler" %>

using System;
using System.Web;
using System.Drawing;

public class Imagehandler : IHttpHandler
{
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "image/jpeg";
Bitmap bmp = (Bitmap)Bitmap.FromFile(HttpContext.Current.Server .MapPath("secure_images/")+
HttpContext.Current.Request["id"]);
bmp.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
bmp.Dispose();
}

public bool IsReusable {
get {
return true;
}
}
}

مسیر عکس هم به این شکل بدید:


<asp:Image ID="Image1" runat="server" ImageUrl="~/Imagehandler.ashx?id=1515.jpg"
Width="300px" />
در قسمت بعد id اسم عکس رو بدید(دقت کنید که اسمی از فولدر نمی بریم چون در هندلر اسم فلودر رو secure_images دادیم.) می تونید تو تمام عکس ها یک پشوند f_ اضافه کنید که در id، اون رو ندید و در خود ImageHandler اضافه کنید، که دیگه اسم فایل ها هم لو نره(اما لازم نیست). در کل نه تنها کاربر مسیر فایل رو دیگه نمی بینه حتی نمی تونه از کلاینت فایل ها رو ببینه(حتی اگه مسیر واقعی رو بدونه)
دقت کنید اینکار رو فقط برای jpg ها انجام دادم شما می تونید با توجه به پسوند فایل فرمت رو عوض کنید اما من توضیه نمی کنم چون خود دستور هر نوع فایلی که بهش بدید تبدیل به jpg می کنه به صورت خودکار.(که فشرده سازی بسیار مناسبی هم داره)
نکته بعدی دقت کنید که اینکار رو فقط برای تصاویری انجام بدید که می خواهید امن باشن و کلاینت های نبینن نه تمام عکس های روی سایت تون. معمولا در 99% مواقع این کد برای عکس هایی که به صورت دینامیک مثلا در گرید ویو نمایش می دید کاربرد داره، پس در نتیجه در آدرس دهی اصلا کارتون رو سخت نمی کنه(در مورد غیر دینامیک ها چون در design تصویر دیده نمیشه با مشکل مواجه میشید که همانطور که گفتم اصلا لازم نیست اینکارو بکنید)