:: شمارشكر دفعات داونلود ::

alachig

Member
سلام.
مي خواستم ببينم چطور ي مي تونم تعداد دفعات داونلود يك فايل را بفهمم و نمايش بدم. درست مثل همين جا!

مثلاْ من تو asp.net برای لینک داولود یه url با یه متغیر تعریف کردم و event آون متغیر تابع redirect رو فراخوانی کردم. تا هم کارهای مربوط به شمارشگرم رو بکنم و هم عملیات داونلود فایل رو اجرا بکنم اما نمیشه.

کد:
<a href=index.aspx?default=download>download from here </a>
...

index.aspx.vb:
if request("default")="download" then
  counter = counter + 1
   response.redirect("file.zip")
end if

البته قرار نیست حتماً از redirect استفاده بکنم. اگه راه دیگه ای داره لطفاً بفرمایید. ممنونم
 

omidak

Active Member
سلام:
چرا همچین کردی؟ 8O
counter = counter + 1
رو قبل از Redirect باید بزاری. چون به محض فراخوانیه redirect میره به اون آدرسی که گفتی. 8O
 

alachig

Member
حالا بابا جزپيات رو ولش.
اون رو مثال اوردم. چون اصلاْ وقتي redirect میشه به آدرس یه فایل صفحه نات فاوند رو میاره و باید یه بار رفرش بکنی تا داونلود بکنه.

راه دیگه ای نداره؟
الگوریتم دیگه ای؟
ابتکار و روش دیگه ای؟
فوریه ها...
 

omidak

Active Member
سلام:
سرور ات مشكل داره :roll:
شايد هم مرورگر ات.
يك آدرس ازش اينجا بزار من هم چك كنم جوابشو بهت بدم :wink:
 

alachig

Member
نه درست شد.
قبلاْ تو قسمت codebehind اش می نوشتم که جواب نمیداد. الان آوردم تو خود صفحه نوشتم اجرا شد.
فقط نميدونم چراDAP فعال نمیشه؟

ممنون

يه نيگاه بنداز(بي زحمند):
http://www.iaushab.ac.ir/Frame.aspx?f=hla
 

a_mollaei

Member
مي توني از كد زير استفاده كني.
اين كد رو به نام يك فايل ذخيره كن. مثلا download.asp بعد به صورتي كه پايين گفتم صداش بزن.

کد:
<%
Response.Buffer = True
Dim strFilePath, strFileSize, strFileName

Const adTypeBinary = 1

strFilePath = Request.QueryString("File")
strFileSize = Request.QueryString("Size")
strFileName = Request.QueryString("Name")

';:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;
'....   PUT YOUR COUNTER HERE
'....   FOR EXAMPLE
'....			
'....				if strfilename="file.zip" then
'....					counter=counter+1
'....				end if
'....
';::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;

Response.Clear

Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = adTypeBinary
objStream.LoadFromFile strFilePath

strFileType = lcase(Right(strFileName, 4))
    
	' Feel Free to Add Your Own Content-Types Here
    Select Case strFileType
        Case ".asf"
            ContentType = "video/x-ms-asf"
        Case ".avi"
            ContentType = "video/avi"
        Case ".doc"
            ContentType = "application/msword"
        Case ".zip"
            ContentType = "application/zip"
        Case ".xls"
            ContentType = "application/vnd.ms-excel"
        Case ".gif"
            ContentType = "image/gif"
        Case ".jpg", "jpeg"
            ContentType = "image/jpeg"
        Case ".wav"
            ContentType = "audio/wav"
        Case ".mp3"
            ContentType = "audio/mpeg3"
        Case ".mpg", "mpeg"
            ContentType = "video/mpeg"
        Case ".rtf"
            ContentType = "application/rtf"
		Case ".htm", "html"
            ContentType = "text/html"
		Case ".asp"
            ContentType = "text/asp"
        Case Else
            'Handle All Other Files
            ContentType = "application/octet-stream"
    End Select
	
	
	Response.AddHeader "Content-Disposition", "attachment; filename=" & strFileName
	Response.AddHeader "Content-Length", strFileSize
	' In a Perfect World, Your Client would also have UTF-8 as the default 
	' In Their Browser
	Response.Charset = "UTF-8"
	Response.ContentType = ContentType
	
	Response.BinaryWrite objStream.Read
	Response.Flush

objStream.Close
Set objStream = Nothing
%>

براي فراخواني هم از كد زير استفاده كن.

کد:
<% response.write "<A href=" & "Download.asp?File=" & Server.Mappath("file.zip") & "&name=File.zip>Download</A>"%>

خوبي اين كد اينه كه تمام فايلها رو دانلود مي كنه حتي فايلهاي asp, html,jpg,gif و...
 

omidak

Active Member
سلام:
كار ميكنه خدا :wink:
به نظر من قشنگ ترين و بهترين سايت دانشگاهيي كه ساخته شده اينه.
ايول :wink:
 

alachig

Member
آقا اميد ممنون از شوخي قشنگتون :)
خیلی ممنونم. قابل شما رو نداره ;)

آقاي مولايي از response.addheader استفاده کردند. این Header به چه دردی می خوره و چه استفاده ای داره؟و چطوری استفاده میشه؟
آیا فقط یه وسیله برای انتقال اطلاعات بین صفحات هست؟اگه هست، امنتیش در چه حدودویه؟
 

a_mollaei

Member
سلام.
ببخشيد كه يكم دير شد.
مي دونيد كه تمام در خواستهاي Browser در قالب هدر از سرور خواسته ميشه. خوب شما هم مي توانيد با دستكاري اين درخواستها چيزي رو كه مي خواهيد از سرور دريافت كنيد.
سرور هدر خواسته شده را ارزيابي مي كنه و اگر احتياج به كامپايل كردن باشه يا كارهاي ديگه مثل صفحات ASP,PHP,... اين كارو انجام مي ده و صفحه رو با هدر هاي مخصوص Browser براي Browser شما مي فرسته و اين هدرها كاري كه Browser بايد انجام بده رو مشخص مي كنند مثل نشون دادن فايلهاي Html و عكس يا بازكردن پنجره Save براي فايلهاي ديگه.
حالا من اينجا فايل شما رو به عنوان يه فايل ناشناس و غير قابل نمايش براي Browser تعريف كردم و اونم گول خورده. شما هر فايلي داشته باشيد. Browser براتون پنجره Save رو باز مي كنه.

در مورد امنيتش هم بايد بگم اين كار بالاترين امنيت رو داره.
 

alachig

Member
يه چيزايي گرفتم. واقعاْ ممنون.
اگه منبع مختصي در اين مورد دارين لطفاْ بفرماييد تا بيشتر بدونيم(البته بغير از asp.net)... ;)
 

alachig

Member
...
بعضی از ما وقتی به رود خانه ای می رسيم آنقدر کنار آن منتظر می مانيم تا یک نفر بيايد و برای ما روی آن پلی بسازد...

ممنونم
 
آقا ميشه يه توضيحي بديد (كامل ولي ساده ) كه ما هم مه تازه كاريم ياد بگيريم خواهش ميكنم بگيد از اسن تو يك صفحه ساده اي اس پي چه طوري مسشه استفاده كرد ؟ ممنون
 

a_mollaei

Member
ehsan_lord_cracker گفت:
آقا ميشه يه توضيحي بديد (كامل ولي ساده ) كه ما هم مه تازه كاريم ياد بگيريم خواهش ميكنم بگيد از اسن تو يك صفحه ساده اي اس پي چه طوري مسشه استفاده كرد ؟ ممنون

ببخشيد من منظورتونو از اسن نفهميدم.
 
بيبن دوست عزيز من يك صفحه اي اس پي دارم خوب ( اس اي پي ايكس نسيت ) و ميخام بهم بگه كه اين كليپ شما چند بار دانلود شده در ضمن در صفحه تعداد زيادي كليپ براي دانلود هست ميشه يه آموزش راحت و ساده براي من بنوسيد . با تشكر
 

a_mollaei

Member
سلام.
چشم. در اولين فرصت حتما براتون مي نويسم.
كليپتون به صورت فايل دانلود مي شه ديگه؟
 
سلام آقا . كلي ممنون و بله به صورت فايل ام پگ دانلود ميشه و سوال ديگه همين فايل نمايش هم داده ميشه . ميشه نشون داد چند بار نمايش داده شده ؟
 

a_mollaei

Member
شما برای تعیین تعداد دفعات دانلود یک فایل باید اول یک دیتا بیس درست کنید و نام فایل خود را در آن قرار دهید.
مثلا نام بانک ما data.mdb هست و نام فایل ما File1.mpg است.
داخل این دیتابیس دو فیلد وجود دارد. یکی فیلد نام و دیگری فیلد تعداد. کدی که من در ابتدای این تاپیک دادم رو داخل یک فایل مثلا با نام Download.asp ذخیره می کنید. برای اینکه تعداد دفعات دانلود را یکی زیاد کنیم. فایل خودمون رو به این فایل می فرستیم. این فایل تعداد رو یکی زیاد کرده و پنجره Save رو برای شما باز می کنه.
فقط باید در ابتدای فایل کد زیر رو اضافه کنید.
کد:
:
:
Response.Buffer = True
Dim strFilePath, strFileSize, strFileName

Const adTypeBinary = 1

strFilePath = Request.QueryString("File")
strFileSize = Request.QueryString("Size")
strFileName = Request.QueryString("Name")

';::::   ADD THIS CODES :::;
    	set objcon=server.createobject("ADODB.connection")
    	objcon.connectionstring="DRIVER={Microsoft Access Driver (*.mdb)};"& _
	"DBQ="&Server.Mappath("data.mdb")
    	objcon.open
	strSql="UPDATE TblFiles SET Count=Count+1 Where FileName='"&strFileName&"'"
	objcon.Execute strsql
	set objcon=nothing

:
:
:
در این کد فرض شده شما یک Table با نام TblFiles دارید که داخل آن فیلدهای Count برای تعداد دفعات دانلود و FileName برای نام فایل وجود دارد.
برای تعداد دفعات نمایش هم این کد رو بالای صفحه ای که فایل توش نمایش داده می شه بذارید.
 
بسيار بسيار ممنونم ولي يك سوال ديگه ببخشيد كه من اينقدر خنگ تشرسف دارم ها ولي اين دي بي ما چطوري ساخته ميشه ؟
 

جدیدترین ارسال ها

بالا