PDA

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 دسترسی به اون فایل رو کنترل می کنن (اگه درست گفته باشم)