Frågan 26 maj 2009 20:01 #1 Hej,
Har inte suttit med ASP på flera år, men måste fixa en sak och har kört fast lite.
Jag ska:
Skapa en .txt fil på servern
Fylla den med info från en databas
Öppna ett stream objekt
Läsa in filen och skicka till webbläsaren
Ta bort filen
Så här har jag gjort:
<%
Dim fso, MyFile
Dim filename, filepath
Dim objStream
filepath = Server.MapPath(".") & "\_export\"
filename = "test.csv"
Set fso = CreateObject("Scripting.FileSystemObject")
Set MyFile = fso.CreateTextFile(filepath & filename, True)
MyFile.WriteLine("This is a test.")
MyFile.Close : Set fso = Nothing
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Type = 1
objStream.Open()
objStream.loadFromFile(filepath & filename)
response.addheader "Content-Disposition", "attachment; filename=""" & filename & ".csv"""
response.addheader "Pragma", "no-cache"
Response.ContentType = "text/csv"
Response.BinaryWrite(objStream.Read())
objStream.close : objStream = Nothing
conn.close : Set conn = Nothing
%>
Det funkade de första 10 gångerna jag provkörde, filen skapades och innehållde texten ovan.
Men nu händer inget alls, filen laddas, men sidan blir vit, inget mer händer, det bra blinkar till.
Får heller inga felmeddelanden.
Jag ska skicka filen som en nedladdningsbar fil till webbläsaren, är det här rätt väg att gå?
Har sökt lite på ADODB både här och på google, men det mesta verkar handla om .NET idag.
/red Filen skapas på servern, men skickas aldrig till webbläsaren.
Troxy Medlem sedan mars 2004 1 505 inlägg Kör sidan genom någon sniffer, tex. http://web-sniffer.net
Fråga: varför skapar du ens en textfil? Kan du inte bara spotta ut datat direkt och skippa omvägen med fso?
Troxy skrev:
varför skapar du ens en textfil? Kan du inte bara spotta ut datat direkt och skippa omvägen med fso?
Absolut kan jag göra det, men har glömt bort nästa all ASP så är lite osäker på hur det ska se ut.
Jag ska generea listor med ~4000 poster, det påverkar inte prestandan negativt att skriva direkt till en stream?
Vore fint med lite kodhjälp så jag har något att börja med.
Tack,
Troxy skrev:
Kör sidan genom någon sniffer, tex. http://web-sniffer.net
Skumt, när jag kör sidan genom den så funkar det fint:
HTTP Status Code: HTTP/1.1 200 OK
Men när jag kör filen i Firefox i en annan flik, står den bara och laddar och inget händer överhuvudtaget.
J johaseo Medlem sedan maj 2009 250 inlägg jag skulle personligen "lägga in"/"smälta in" .aspx sidor på denna gamla applikation istället och vidare utveckla de funktioner som skall till på det viset .... kan IIS:en på denna maskin ej köra .Net ?
johaseo skrev:
jag skulle personligen "lägga in"/"smälta in" .aspx sidor på denna gamla applikation istället och vidare utveckla de funktioner som skall till på det viset .... kan IIS:en på denna maskin ej köra .Net ?
Jo visst, den ligger hos Binero så det går alldeles ypperligt. Har inte en aning om hur det här ska lösas, men jag behöver ansluta till databasen, hämta data, skriva till en stream och skicka CSV till webbläsaren.
Har du någon exempelkod/länkar som kan knuffa igång mig?
Troxy Medlem sedan mars 2004 1 505 inlägg Vad är det för data du försöker skriva ut? Är det simpel text i csv-format?
Troxy skrev:
Vad är det för data du försöker skriva ut? Är det simpel text i csv-format?
Ja, det är en tabseparerad csvfil som ska se ut såhär:
USERNAME FIRSTNAME LASTNAME EMAILADDRESS
mylogin myfirst mylast myemail
mylogin myfirst mylast myemail
mylogin myfirst mylast myemail
mylogin myfirst mylast myemail
Troxy Medlem sedan mars 2004 1 505 inlägg CsvData = ...........
Response.Clear
Response.AddHeader "Content-Type", "application/octet-stream"
Response.AddHeader "Content-Length", Len(CsvData)
Response.AddHeader "Content-Disposition", "attachment; filename=""Data.csv"""
Response.Write CsvData
Response.End