PDA

View Full Version : کد کردن مسیر عکس ها



niloo17
جمعه 02 بهمن 1388, 09:51 صبح
سلام دوستان
من برای اینکه کاربر به عکس ها دسترسی نداشته باشد از فایل ashx استفاده کردم ولی برای نمایش عکس ها از js استفاده کردم ولی js فایل های ashx نمایش نمی ده و عکس ها نمایش نمی ده
ممنون می شم اگه راهنماییم کنید .

ehsan2007
جمعه 02 بهمن 1388, 12:21 عصر
کد عکس خودتو اینجوری نمایش بده
ابتدا یک صفحه aspx درست کن سپس این کد رو بزار واسه قسمت سرورت


using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Drawing;
using System.Drawing.Imaging;
publicpartialclassStudent_Ra_ShowImageRa : System.Web.UI.Page
{
protectedvoid Page_Load(object sender, EventArgs e)
{
Bitmap objBitmap;
try
{

if (Session["UserStudentRa"] != null && Session["UserStudentRa"].ToString() != "")
{
try
{
objBitmap = new Bitmap(Server.MapPath("~/AdministratorAll/Ra/ImageUserRa/B" + Session["UserStudentRa"].ToString() + ".jpg"));
objBitmap.Save(Response.OutputStream, ImageFormat.Jpeg);
objBitmap.Dispose();
}
catch (Exception)
{
objBitmap = new Bitmap(Server.MapPath("~/AdministratorAll/Ra/ImageUserRa/NoPic.jpg"));
objBitmap.Save(Response.OutputStream, ImageFormat.Jpeg);
objBitmap.Dispose();
}
}
}
catch(Exception)
{
objBitmap = new Bitmap(Server.MapPath("~/AdministratorAll/Ra/ImageUserRa/NoPic.jpg"));
objBitmap.Save(Response.OutputStream, ImageFormat.Jpeg);
objBitmap.Dispose();
}
}
}

همون جور که میبینی با استفاده از
Session
عکس رو از مسیری که کاربر نمیدونه کجاست میخونه و نمایش میده و اگه عکسش وجود نداشته باشه یک عکس که روش نوشته no pic نمایش میده
حالا واسه نمایش عکس توی صفحه از کد html این استفاده کن

<img alt="" src="ShowImageRa.aspx" />
به همین سادگی
حالا اگه خواستی بدون
Session این کارو انجام بدی آدرس id کاربرو hash کن با url بفرست و بعد رمزگشاییش کن و عکسرو نشون بده
اینجوری


<img alt="" src="ShowImageRa.aspx?id=dJyReIwFbdj" />

موفق باشی

niloo17
جمعه 02 بهمن 1388, 12:31 عصر
ممنون از راهنماییتون
ولی مشکل من اینه که عکس ، فیلم ، صوت و متن دارم و همه اینا باید کد بشن

ehsan2007
جمعه 02 بهمن 1388, 12:58 عصر
به این تجارب جناب راد توجه کن
محافظت از فایل ها از دسترسی غیر مجاز:

DNN ماژولی برای مدیریت خطاها داره که خطاها رو در یک فایل XML ذخیره می کنه.
در بررسی کدهای DNN مورد جالبی رو دیدم که می تونه ایده ی خوبی برای محافظت از فایل ها از دسترسی غیر مجاز باشه.
وقتی درخواستی به IIS ارسال میشه، اون درخواست تنها در صورتی توسط IIS هندل میشه که جزء پسوندهایی باشه که برای IIS شناخته شده است.
برای دیدن لیست این پسوندها در IIS بر روی Default Web Site راست کلیک و گزینه ی Properties رو انتخاب کنید. در سربرگ Home Directory بر روی دکمه ی Configuration کلیک کنید.
فرض کنید نیاز دارید تا فایل های ZIP رو از دسترسی کاربر غیر مجاز دور نگاه دارید.
دو راه دارید:
1) پوشه ی محتوی فایل های ZIP رو به عنوان پوشه ی Protected از طریق Control Panel معرفی کنید.
2) این کار رو به IIS واگذار کنید.

اگر به روش اول عمل کنید، با محدودیت هایی مواجه میشید. مثلا فرض کنید پرتالی ایجاد کردید و این پرتال رو به مشتری میدید. اگر هاستی که مشتری از اون استفاده می کنه امکان Protected Folders رو فراهم نکنه، با مشکل مواجه میشید. و یا فرضا فایل مورد نظر شما به هر دلیلی باید در ریشه ی اصلی سایت وجود داشته باشه. در این حالت اگر یک Site Map داشته باشید، موتور جستجوگر نمی تونه به Site Map شما دسترسی داشته باشه.

و اما روش دوم:
واگذار کردن وظیفه ی حفاظت از فایل ها به IIS روش خوبی هست اما پسوند فایل باید به IIS معرفی بشه. فایل ZIP جزء پسوندهای شناخته شده توسط IIS نیست و طبیعتا باید این پسوند رو به اون معرفی کرد.
کمتر هاستی این کار رو برای شما انجام میده و اگر هم انجام بده در قبال اون هزینه ای رو دریافت می کنه.
ترفندی که میشه در اینجا استفاده کرد، تغییر پسوند فایل ZIP به یکی از پسوندهایی است که توسط IIS شناخته شده است. DNN پسوند resourcers. رو بدین منظور استفاده کرده تا اگر فردی آدرس مستقیم فایل رو در Address bar وارد کرد، چون پسوند resources. جزء پسوندهایی هست که IIS اون رو هندل می کنه، پس به راحتی میشه دسترسی به این فایل رو کنترل کرد.
اگر خواستید به کاربر اجازه ی دانلود فایل رو بدید، به راحتی با Stream کردن فایل می تونید این کار رو انجام بدید.
همون طور که احتمالا می دونید، یکی از خطوط دانلود فایل به طریق Stream، تعیین هدر "Content-Disposition" هست که در اون می تونید "نام و پسوند واقعی" فایل رو قرار بدید:
کد:
Response.AddHeader("Content-Disposition", "attachment; filename=myFile.zip")
روش جالبیه. ازش استفاده کنید.