webForumDet fria alternativet

Räkna antal nedladdningar

ASP

11 svar · 664 visningar · startad av eddy1

Medlem sedan aug. 2001969 inlägg
Frågan#1

Tja

sitter och funderar lite men har inte kommit fram till något bra.
Det är så att jag skulle vilja räkna antal nedladdningar av en fil på min sida, men vet inte riktigt hur???

Trycker man på länken så ska ju det räknas upp i en databas och sedan ska nedladdningen börja. Okey en funktion som räknar upp ett i databasen är jag med på men hur får jag sedan nedladdningen att börja typ när sidan har laddats om och databasen är uppdaterad??

Mvh

Medlem sedan juni 200032 967 inlägg
#2
Response.redirect "filen.zip"

borde väl fungera?

Medlem sedan aug. 2001969 inlägg
#3

men

Kommer den sidan som innehåller länken visas då? Jag vill ju att det ska vara precis som att trycka på en länk. Sidan kommer ju att laddas om men när den gjort det ska ju nedladdningen starta...

Medlem sedan juni 200032 967 inlägg
#4

Prova...

Annars kan du ju bara öppna ett nytt fönster med javascript, och filnamnet som location.

mvh

Medlem sedan sep. 20011 722 inlägg
#5

Nej. Kör du utan flush eller liknande så visas den inte. ASP koden körs på serversidan så besökaren kommer aldrig märka någonting. Möjligen att sidan laddar något längre med det ska vara det enda och under den korta tiden är webbfönstert bara vitt.

Medlem sedan aug. 2001969 inlägg
#6

Okey

Hur använder jag flush då? Menar du att jag kan använda response.redirect eller??

Medlem sedan dec. 20003 563 inlägg
#7

Det finns en del metoder att "streama" ut filer till användare.
Detta är ett fungerande sätt.

Response.Clear()
            Response.ContentType = "application/octet-stream"
            Response.AddHeader("Content-Disposition", _
            "attachment; filename=""" & Request.QueryString("file") & """")
            Response.Flush()
            Response.WriteFile("c:\filepath\" & Request.QueryString("file"))
Medlem sedan aug. 2001969 inlägg
#8

Hmm

Jag är inte riktigt med, men om jag lägger denna kod så den körs när man klickar på länken kommer då sidan laddas om så den visas och att nedladdningens dialogen kommer upp eller???

Eller varför streamar man, är inte riktigt med där?

Funderar på om man kan göra så att när man tryck på länken så räknas det upp i databasen och sedan så fyller asp koden i en Body onload tagg med filnamnet. då borde väll sidan laddas så man ser den och sedan när onload körs så får man upp dialogen om nedladdningen av den angivna filen i Onload ?????

Medlem sedan dec. 20003 563 inlägg
#9

Du länkar till denna sida där du även skickar med information om just vilken fel du vill ladda ner.
Självklart kontrollerar du att inga otillåtna filnamn skickas med.
Länken skulle kunna se ut typ: <a href=download.asp?file=file_name.exe>

i download.asp som länken leder till kör du först en uppdatering i databasen på just denna fil, vilket jag antar var det du ville göra, sen anropar du den koden jag skickade i föregående inlägg.
Du byter självklart ut filepath mot någontin riktigt. På detta sätt kommer "dialogrutan" att öppnas.
Application/octet-stream tvingar nämligen alla webbläsare att öppna filen som en dialogruta, även htm, asp och andra filer.

Medlem sedan aug. 2001969 inlägg
#10

Får inte koden att fungera! Följande felmeddelande ges, och jag hänger inte riktigt med på paranteserna...

Feltyp:
Kompileringsfel i Microsoft VBScript (0x800A0414)
Det går inte att använda parenteser när en Sub anropas.
/dev/index.asp, line 7, column 63
"attachment; filename=""" & Request.QueryString("file") & """")

<kod>
Response.Clear()
Response.ContentType = "application/octet-stream"
Response.AddHeader("Content-Disposition", _
"attachment; filename=""" & Request.QueryString("file") & """")
Response.Flush()
Response.WriteFile("c:\filepath\" & Request.QueryString("file"))
</kod>

Medlem sedan juni 200032 967 inlägg
#11

Antingen tar du bort parenteserna vid Response.Addheader eller så skriver du call innan. Det förstnämnda är helt klart att föredra.

mvh

Medlem sedan mars 2000187 inlägg
#12

Får det att fungera genom att nedladdningsfönstret öppnas. Dock får alla filer jag laddat ned och sparat 315 bytes o filerna går naturligtvis inte att öppna (har prövat filer från några Kb till flera Mb), någon som har en idé om vad som är galet?


FileId = Clng(request.querystring("Id"))

Set objRS = db.execute("SELECT Filepath FROM DownloadFile WHERE Id = " & FileId & "")
If NOT objRS.EOF Then
	Filepath = objRS("Filepath")
	db.execute("UPDATE DownloadFile SET Downloads = Downloads + 1 WHERE Id = " & FileId & ""),, 128
end if
objRS.Close
Set objRS = Nothing

Response.Clear()
	Response.ContentType = "application/octet-stream"
	Response.AddHeader "Content-Disposition", _
	"attachment; filename=""" & Filepath & """"
	Response.Flush()
	Response.WriteFile("d:\www\site1\www\upload\" & Filepath)
254 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)