View Full Version : مانع شدن از دانلود فایل ها داخل سایت
eyes_shut_number1
شنبه 02 خرداد 1388, 00:07 صبح
سلام دوستان
چظوری میتونم مانع این بشم فایلعایی که توی سایت هست مثلا pdf ها رو کاربر نتونه بخه صورت مستقیم دانلود کنه
ممنون
iman_22a
شنبه 02 خرداد 1388, 00:19 صبح
سلام دوستان
چظوری میتونم مانع این بشم فایلعایی که توی سایت هست مثلا pdf ها رو کاربر نتونه بخه صورت مستقیم دانلود کنه
ممنون
سلام دوست عزیز ، این یه نمونه کاره که من دارم :
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.tblMain.Visible = False
If Me.Request.QueryString.Item("fileid") Is Nothing Or Me.Request.QueryString.Item("filename") Is Nothing Or Me.Request.QueryString.Item("type") Is Nothing Then
Me.Response.Redirect("Index.aspx")
Exit Sub
ElseIf Me.Request.QueryString.Item("fileid").Trim.Length = 0 Or Me.Request.QueryString.Item("filename").Trim.Length = 0 Or Me.Request.QueryString.Item("type").Trim.Length = 0 Then
Me.Response.Redirect("Index.aspx")
Exit Sub
End If
If UserName() = "" Then
Me.tblMain.Visible = True
Exit Sub
Else
Me.tblMain.Visible = False
Dim InitPath As String
Select Case Me.Request.QueryString.Item("type").Trim.ToLower
Case "ebook"
InitPath = "\eBooks\"
End Select
Response.ContentType = IO.Path.GetExtension(Server.MapPath("") & InitPath.Trim & Me.Request.QueryString.Item("fileid").Trim & ".resources").Replace(".", "")
Response.AddHeader("content-disposition", "attachment; filename=" & Me.Request.QueryString.Item("filename"))
Dim FileSize As Long
Dim fs As New IO.FileStream(Server.MapPath("") & InitPath.Trim & Me.Request.QueryString.Item("fileid").Trim & ".resources", IO.FileMode.Open)
FileSize = fs.Length
Dim buf(CInt(FileSize - 1)) As Byte
fs.Read(buf, 0, FileSize)
fs.Flush()
fs.Close()
Response.BinaryWrite(buf)
Response.End()
End If
End Sub
eyes_shut_number1
شنبه 02 خرداد 1388, 00:30 صبح
میشه یه توضیح بدین؟ ممنون
iman_22a
شنبه 02 خرداد 1388, 02:40 صبح
میشه یه توضیح بدین؟ ممنون
سلام ، شرمنده توضیحاتش یادم رفت (البته توضیح خاصی نداره ، تقریبا واضحه)
روند این کار به این صورته که ، بعد از این که دسترسی کاربر مجاز شناخته شد ، محتویات فایل بوسیله متدهایی که می بینید خوانده شده و در Responseریخته می شود و مسیر اصلی فایل به کاربر نمایش داده نمیشود .
البته این قطعه کدی که گذاشتم مربوط به هر نوع فایلی می تونه باشه که بسته به QueryString ی که فرستاده میشه ، برنامه می فهمه که چه نوع فایلی رو توی Reponse بریزه و تنظیمات هدر اون رو هم انجام بده .
نمی دونم روش دوستان دیگه چطوریه !
bahman_akbarzadeh
شنبه 02 خرداد 1388, 03:07 صبح
من يه زماني دنبال اي قضيه بودم. ممنون.
پس در نهايت، فايل رو اگه خواستيم دانلود بشه تو يه استريم باز ميكنيم و با Response.BinaryWrite به سمت كلاينت ميفرستيمش.
eyes_shut_number1
شنبه 02 خرداد 1388, 11:49 صبح
توضیحاتتون درست
اما من منظورم این بود که اگه کاربر اسم پوشه و فایل های مارو میدونست از دسترسی مستقیم کاربر به این فایلها جلوگیری کنیم
یعنی با زدن لینک مستقیم نتونه دانلود کنه
iman_22a
شنبه 02 خرداد 1388, 13:41 عصر
توضیحاتتون درست
اما من منظورم این بود که اگه کاربر اسم پوشه و فایل های مارو میدونست از دسترسی مستقیم کاربر به این فایلها جلوگیری کنیم
یعنی با زدن لینک مستقیم نتونه دانلود کنه
خوب الانم با این روش نمی تونه ببینه ( مگر این که حدس بزنه ) ، البته روش دیگه ای هم هست که برای فایل ها یه پسوند خاص قرار میدن مثل resources. و یا هر پسوند دیگه ای ، بعد میان با نوشتن یه HttpHandler دسترسی به اون فایل رو کنترل می کنن (اگه درست گفته باشم)
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.